Numpy学习
Numpy
应用
Numerical Python是Python的一个拓展程序库,支持大量维度数组和矩阵运算。为开放的源代码并且由许多协作者共同维护开发,其运行速度很快。 Numpy通常与:
- Scipy(科学工程计算)
- Matplotlib(绘图)
一起使用
1 | from numpy import *#导入numpy库 |
Numpy的Ndarray对象
基本形式如下: numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) 其中:
- object: 要进行操作的数组
- dtype: 元素的数据类型(后面会有介绍)
- copy: 对象是否复制
- order: 创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)
- subok: 默认返回一个与基类类型一致的数组
- ndmin: 指定生成数组的最小维度
数据类型
Numpy的数据类型较多,具体可以在这里找到
数据类型对象(dtype)
numpy.dtype描述了数据的以下方面:
- 数据的类型(整数,浮点数)
- 数据大小(用多少字节去存储)
- 数据的字节顺序 等等 小端法:最小值存储在最小的地址。 大端法:最重要的字节存储在最小的地址。
dtype对象使用如下语法: numpy.dtype(object,align,copy) 关于其的详细用法我们可以通过如下例子来解释:
1 | import numpy as np |
结果为:
1 | [10,20,30] |
(其中的有无括号区别我也不清楚,此处存疑问老师) 我们也可以用另一个例子来加深理解:
1 | import numpy as np |
可以看到,np.dtype将三种数据属性(名称和类型)对应到了np.array上,name对应一列,age对应一列,并分别规定了类型(int8对应i1,此类i2,i3,i4乘以8即可)等等
Numpy数据类型
Numpy数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2。 在 NumPy中,每一个线性的数组称为是一个轴(axis),也就是维度(dimensions)。
- axis=0,表示沿着第 0 轴进行操作,即对每一列进行操作。
- axis=1,表示沿着第1轴进行操作,即对每一行进行操作。
一些比较重要的nadarray对象属性:
属性 | 说明 |
---|---|
ndarray.ndim | 秩,即轴的数量或维度的数量 |
ndarray.shape | 数组的维度,对于矩阵,n行m列 |
ndarray.size | 数组元素的总个数,相当于.shape中 n*m 的值 |
ndarray.dtype | ndarray 对象的元素类型 |
ndarray.itemsize | ndarray 对象中每个元素的大小,以字节为单位 |
ndarray.flags | ndarray 对象的内存信息 |
ndarray.real | ndarray元素的实部 |
ndarray.imag | ndarray 元素的虚部 |
ndarray.data | 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。 |
我们引用实例:
- ndarray.ndim
1 | import numpy as np |
可自行运行,结果为两个4*3矩阵列表。
- ndarray.shape
1 | a = np.array([[1,2,3],[4,5,6]]) |
其结果将2*3的矩阵转化为3*2
- ndarray.itemsize ndarray.itemsize 以字节的形式返回数组中每一个元素的大小。 例如,一个元素类型为 float64 的数组 itemsize 属性值为 8(float64 占用 64 个 bits,每个字节长度为 8,所以 64/8,占用 8 个字节),又如,一个元素类型为 complex32 的数组 item 属性为 4(32/8)。
1 | # 数组的 dtype 为 float64(八个字节) |
结果为8。
- ndarray.flags ndarray.flags 返回 ndarray 对象的内存信息。 关于内存知识没有太大学习兴趣,在此不再赘述。
Numpy创建数组
ndarray 数组除了可以使用底层 ndarray 构造器来创建外,也可以通过以下几种方式来创建。
- numpy.empty numpy.empty 方法用来创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组: numpy.empty(shape, dtype = float, order = ‘C’) order(c或者f)表示行优先或列优先。
1 | x = np.empty([3,2], dtype = int) |
结果的数组元素为随机值,未初始化。 同样的用法还有
- numpy.zeros
- numpy.ones
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 丁宇辰的个人BLOG!