Numpy使用教程(一)
· 阅读需 6 分钟
术语
axis
对于二维数组,垂直为轴0,水平为轴1。许多操作可以沿着一个轴进行。
>>> x = np.arange(12).reshape(3,4)
>>> x
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> x.sum(axis=0)
array([12, 15, 18, 21])
>>> x.sum(axis=1)
array([ 6, 22, 38])
broadcast
Numpy可以对形状不匹配的数组执行操作
>>> np.array([2,3])+1
array([3, 4])
>>> np.array([[2,3]])+1
array([[3, 4]])
>>> np.array([[2,3]])+np.array([1,2])
array([[3, 5]])
>>> np.array([[2],[3]])+np.array([1,2])
array([[3, 4],
[4, 5]])
这个机制在便捷的同时可能会出现意料之外的结果,因此shape不确定时建议先reshape
。
mask
布尔数组,用于选取元素
>>> x = np.arange(5)
>>> x
array([0, 1, 2, 3, 4])
>>> mask = (x > 2)
>>> mask
array([False, False, False, True, True], dtype=bool)
>>> x[mask] = -1
>>> x
array([ 0, 1, 2, -1, -1])
数值类型
numpy 支持丰富的数值类型。
在数组里可以使用dtype=
参数来指定数值类型。
使用.astype()
方法进行数值类型转换,使用.dtype
查看dtype属性。
多维数组的创建
【参数说明】
order
:{'C','F'}
,以行(C)或列(F)为主顺序。
创建ndarray
的方法:
从列表、元组等转换
使用np.array
将列表或元组转换为ndarray数组
使用np原生方法创建
arange
在指定区间内创建一系列均匀间隔的值linspace
在指定区间内返回间隔均匀的值ones
用于快速创建数值全部为1的多维数组zeros
用于快速创建数值全部为0的多维数组eye
用于创建一个二维数组,其特点是k对角线上的值为1,其余值全为0
numpy.arange(start, stop, step, dtype=None)
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
numpy.ones(shape, dtype=None, order='C')
numpy.zeros(shape, dtype=None, order='C')
numpy.eye(N, M=None, k=0, dtype=<type 'float'>)
从已知数据创建
fromfile
:从文本或二进制文件中构建多维数组
frombuffer
, fromfunction
, fromiter
, fromstring
等
多维数组的属性
T
:数组的转置,同.transpose()
dtype
:包含元素的数据类型
imag
: 元素的虚部
rear
: 元素的实部
size
: 元素数
itemsize
: 一个数组元素的字节数
nbytes
: 元素总字节数
ndim
: 数组的尺寸
shape
: 数组维数组