Numpy入门1

作者: DayDayUpppppp | 来源:发表于2017-06-04 16:25 被阅读0次

标准安装python里面提供了两种表示数组的方法:

  1. list
  2. array

list的缺点:
标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针。这样为了保存一个简单的[1,2,3],需要有3个指针和三个整数对象。对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。

array的缺点:
array对象和列表不同,它直接保存数值,和C语言的一维数组比较类似。但是由于它不支持多维,也没有各种运算函数,因此也不适合做数值运算。

所以,对于矩阵运算和矩阵处理更好的方法是,使用numpy库。

1. 创建一维矩阵和多维矩阵

使用np的array函数来创建

a = np.array([1, 2, 3, 4])
b = np.array((5, 6, 7, 8))
c = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])

shape属性

>>> a.shape
(4,)
>>> c.shape
(3, 4)

修改shape属性的方法:

#方法1:
#修改shape属性,由原来的(3,4)改为现在的(4,3)
#修改之后,矩阵的形状也会改变
>>> c.shape = 4,3
>>> c
array([[ 1,  2,  3],
       [ 4,  4,  5],
       [ 6,  7,  7],
       [ 8,  9, 10]])

#当某个轴的元素为-1时,将根据数组元素的个数自动计算此轴的长度
#因此下面的程序将数组c的shape改为了(2,6)
>>> c.shape = 2,-1
>>> c
array([[ 1,  2,  3,  4,  4,  5],
       [ 6,  7,  7,  8,  9, 10]])

#方法2,使用reshape方法
>>> d = c.reshape((4,3))

数据元素的属性:

>>> c.dtype
dtype('int64')

#同时也可以在创建数组的时候,指明元素的类型
#指明是float
>>> np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.float)
array([[  1.,   2.,   3.,   4.],
       [  4.,   5.,   6.,   7.],
       [  7.,   8.,   9.,  10.]])

#指明是complex
>>> np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.complex)
array([[  1.+0.j,   2.+0.j,   3.+0.j,   4.+0.j],
       [  4.+0.j,   5.+0.j,   6.+0.j,   7.+0.j],
       [  7.+0.j,   8.+0.j,   9.+0.j,  10.+0.j]])

</br>
刚才创建数组的办法,都是手动输入一个序列,这样的做法,显然效率不高。numpy提供了专门创建数组的函数。

主要是两个函数:

  1. arange函数
  2. linspace函数

arange函数类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值:

>>> np.arange( 0, 1, 0.1)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9])

np.arange(10) 等价于 np.arange(0,10,1)

linspace函数通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值:

#注意linspace(0,1,10) 和 linspace(0,1,11)的区别
In [2]: np.linspace(0,1,10)
Out[2]:
array([ 0.        ,  0.11111111,  0.22222222,  0.33333333,  0.44444444,
        0.55555556,  0.66666667,  0.77777778,  0.88888889,  1.        ])

In [3]: np.linspace(0,1,11)
Out[3]: array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ])
np.arange(args1,args2,args3) 函数和
np.linspace(args1,args2,args3) 函数
的区别在于:

arange函数的三个参数分别是区间起点,区间终点,和步长
linspace函数的三个参数分别是区间的起点,区间的终点(闭区间包含终点),这个区间包含的点
2. 访问元素

2.1 下标访问元素

>>> a = np.arange(10)
>>> a[5]    # 用整数作为下标可以获取数组中的某个元素
5

2.2 切片访问元素

>>> a[3:5]  # 用范围作为下标获取数组的一个切片,包括a[3]不包括a[5]
array([3, 4])

#切片的第三个参数 表示步长
array([  0,   1, 100, 101,   4,   5,   6,   7,   8,   9])
>>> a[1:-1:2]   # 范围中的第三个参数表示步长,2表示隔一个元素取一个元素
array([  1, 101,   5,   7])

2.3 使用整数序列访问

>>> x=array([10,  9,  8,  7,  6,  5,  4,  3,  2])
>>> x[[3, 3, 1, 8]] # 获取x中的下标为3, 3, 1, 8的4个元素,组成一个新的数组
array([7, 7, 9, 2])

2.4 使用布尔数组访问

x=array([5, 4, 3, 2, 1])
>>> x[np.array([True, False, True, False, False])]
#输出的结果是  array([5, 3])

#布尔数组的长度不够时,不够的部分都当作False
array([4, 5, 4, 5, 5])
>>> x[np.array([True, False, True, True])]
>>> # 布尔数组的长度不够时,不够的部分都当作False
array([5, 3, 2])
3. 多维数组

多维数组的存取和一维数组类似,因为多维数组有多个轴,因此它的下标需要用多个值来表示。

image.png

能看懂这个图,就基本上理解了多维数组的访问方式了。

4. 创建一个0到1 的随机矩阵
from numpy import random
randArray = random.random(size=(2,4))
 
#输出
#array([[0.93848018,0.42005976,0.81470729,0.98797783],[0.12242703,0.42756378,0.59705163,0.36619101]])
5. 创建一个指定范围的随机矩阵
from numpy import random
random.randint(1,100,size=(3,3))
 
#输出
#array([[74,76,46],[90,16,8],[21,41,31]])

numpy的参考资料:
英文:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
中文:http://old.sebug.net/paper/books/scipydoc/numpy_intro.html

相关文章

  • Numpy语法入门(一)

    1 Numpy简易入门 1.1 认识Numpy数组对象 1.1.1 np.arange In [1]: Out[1...

  • Numpy

    1.numpy.tile(A,B)函数,实例验证 快速入门 Numpy[https://mp.weixin.qq....

  • Numpy入门1

    标准安装python里面提供了两种表示数组的方法: list array list的缺点:标准安装的Python中...

  • Python编程&数据科学入门 Lesson4

    第四课 - NumPy 入门 本课内容: 0. 导入 NumPy 包 1. 创建 NumPy 数组 2. 索引和切...

  • Numpy简易入门笔记

    来自 AI基础:Numpy简易入门手动运行了一遍实例代码,笔记待查于此处。 Numpy 简易入门 Numpy是 N...

  • Numpy 基础入门【1】

    一、引入Numpy 默认的方式是:import numpy as np一般不推荐采用其他方式,上面是默认的方法。 ...

  • Numpy笔记1:入门

    Numeic Python的简称,Python第三方库,用于计算、处理一维数组或多维数组 1、优点 Python ...

  • (二)Python数据分析与展示-Numpy|python数据分

    1.Python数据分析与展示-导学2.数据维度-Numpy入门13.Numpy的数组对象:ndarray-Num...

  • 量化交易十天入门

    (1)NumPy User Guide: (30分钟入门) https://docs.scipy.org/doc/...

  • numpy 学习(待更新)

    numpy 学习 标签(空格分隔): 机器学习 Numpy 入门 一、安装 pip install numpyor...

网友评论

    本文标题:Numpy入门1

    本文链接:https://www.haomeiwen.com/subject/nzjvfxtx.html