目录
NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。
4.1 NumPy的ndarray:一种多维数组对象
可以创造一个数组,利用这种数组对整块数据进行运算。
import numpy as np
data = np.random.randn(2, 3) # 创造了一个两列三行的数值
data
array([[ 0.6367316 , -0.61215317, 0.24309432],
[-1.82033836, 0.45495452, -0.31322135]])
进行数学运算:
shape:返回一个代表各维度大小的元组
dtype:返回一个表示数组数据类型的对象
创建ndarray
使用array函数创建,它接受一切序列型的对象,然后转化成一个Numpy数组。
嵌套序列将会转换为一个多维数组:
zeros:创建一个全是0的数组
ones:创建一个全是1的数组
empty:创建一个没有任何具体值的数值
arange:类似python的range
ndarray的数据类型
astype:将一个数值的dtype转换成另一个dtype
如果将浮点数转化成整数,小数部分将会被截取删除
如果某字符串数组表示的全是数字,也可以用astype将其转换为数值形式:
NumPy数组的运算
数组之间可以直接进行加减乘除的运算
大小相同的数组之间的比较会生成布尔值数组
In [57]: arr2 = np.array([[0., 4., 1.], [7., 2., 12.]])
In [58]: arr2
Out[58]:
array([[ 0., 4., 1.],
[ 7., 2., 12.]])
In [59]: arr2 > arr
Out[59]:
array([[False, True, False],
[ True, False, True]], dtype=bool)
基本的索引和切片
跟python的列表类似,但对它的任何修改都会反映在源数组上
arr = np.arange(10)
arr[5:8]
array([5, 6, 7])
arr[5:8] = 12
arr
array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
arr_slice = arr[5:8]
arr_slice
array([12, 12, 12])
arr_slice[1] = 12345 # 赋值给另一个对象后,对它进行修改直接影响了原数据
arr
array([ 0, 1, 2, 3, 4, 12, 12345, 12, 8, 9])
注意:如果你想要得到的是ndarray切片的一份副本而非视图,就需要明确地进行复制操作,例如arr[5:8].copy()
。
多维数组:
arr3d[0]是一个2×3数组:
标量值和数组都可以被赋值给arr3d[0]:
切片索引
和python列表的一维对象差不多
ndarray的二维数组需要在切片后面再加个“,”