numpy基本操作
具体信息请查看官方文档
数组创建
- 直接定义
a = np.array([2,3,4])
- 使用arange函数(类似python中的range函数) API: numpy.arange
a = np.arange(12).reshape((3,4))
- 当步长为浮点数的时候,常常使用linespace函数:给定start , end以及num直接指定元素数量。
- 函数zeros 创建一个由0组成的数组,函数ones创建一个完整的数组,函数empty 创建一个数组,其初始内容是随机的,取决于内存的状态。
- 随机生成矩阵:
a = np.random.random((2,4))
: 随机生成2*4的矩阵
基础运算
- 算术运算符(+,-,* ,**,sin等)会应用到 元素 级。
特别注意平方的表示方法 eg. c = b**2
>>> a = np.array( [20,30,40,50] )
>>> b = np.arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854])
>>> a<35
array([ True, True, False, False]
- 对于数组,
print(array<3)
可以判断哪些元素小于3. 小于三的元素用True占位,其他的用false占位。 - 对于a,b两个矩阵点乘:
a.dot(b)
或者a@b
- 求矩阵a中所有元素的和
np.sum(a)
, 最大值np,min(a)
, 最小值np.max(a)
。 - 计算最小值或者最大值的索引np.argmin(a), npargmax(a)。 计算所有元素的平均值a.mean()
- 转置:
a.T
或者np.transpose(a)
np. clip(a,5,9)
所有大于9的数换成9,小于5的换成5- axis参数指定运算维度,axis=1 以列为单位运算,axis=0以行为单位运算。
索引与切片
- 对二维数组
A[2]
代表索引为2的一整行
A[2][1]
坐标为(2,1)的元素
A[:6:2] = -1000
equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000
A[ : :-1]
逆序
A[ : ,1] 第一列 - 迭代所有行,转置后可以迭代所有列
for row in A:
print(row)
- 迭代所有元素:
for item in A.flat
print(item)
A.flatten() 把二维数组转化为一维数组
array叠加与分割
- vertical stack:
np.vstack(A, B)
horizontal stack:np.hstack(A, B)
把一行转化成一列无法使用转置,使用newaxis添加新维度 - hsplit() 以及vsplit()
浅拷贝&深拷贝
- 变量本质为reference。
- deep copy使用copy函数:
b=a.copy()