全文使用np表示numpy
Numpy底层是由C语言实现,所以计算高效简洁。
创建数组
Array=np.array(列表/元组)
访问二维及以上的数组时以下两种放法等价
#打印二维数组第二行第二列的值,以下两种方法等价
print(Array[1,1])
print(Array[1][1])
数组的相关属性
print(Array.ndim) # 显示数组的维度
print(Array.size) # 显示数组元素的总个数
print(Array.shape) # 显示数组的形状
print(Array.dtype) # 显示数组中数据的类型
print(Array.itemsize) # 显示数组中数据类型所占字节数
创建特殊的数组
array()和asarray()的区别
改变数组形状
当改变形状时,应该考虑到数组中元素的个数,确保改变前后,元素总个数相等。
b = np.arange(12)
b.reshape(-1,1)#第一个参数取-1,自动计算该维度的取值,第二个参数为1表示一列。可以得到一个12行1列的二维数组。
b.reshape(-1) # 再将上面的二维数组转换成一维数组
数组运算(加减乘除)
两个数组的长度和形状应该一致,对应元素进行运算。
一维数组可以和多维数组
当两个数组中元素的数据类型不同时,精度低的数据类型,会自动转换为精度更高的数据类型,然后再进行运算。
a = np.array([0,1,2,3])
b = np.array([
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
])
a+b #数组a依次与数组b的每一行对应元素相加
矩阵运算
矩阵相乘
# 矩阵相乘的两种方法
np.matmul(A,B)
np.dot(A,B)
A.T#矩阵A的转置
A.I#矩阵A的逆
数组间的运算
随机数模块np.random
seed()函数设置随机数种子
np.random.seed(随机数种子)
打乱顺序函数shuffle()
对于多维数组shuffle只打乱第一维。
np.cumsum()
这个函数的功能是返回给定axis上的累计和
- 对于一维输入a(可以是list,可以是array,假设a=[1, 2, 3, 4, 5, 6, 7] ,就是当前列之前的和加到当前列上,如下:
>>>import numpy as np
>>> a=[1,2,3,4,5,6,7]
>>> np.cumsum(a)
array([ 1, 3, 6, 10, 15, 21, 28])
- 对于二维输入a,axis=0(第1行不动,将第1行累加到其他行);axis=1(进入最内层,转化成列处理。第1列不动,将第1列累加到其他列),如下:
>>>import numpy as np
>>> c=[[1,2,3],[4,5,6],[7,8,9]]
>>> np.cumsum(c,axis=0)
array([[ 1, 2, 3],
[ 5, 7, 9],
[12, 15, 18]])
>>> np.cumsum(c,axis=1)
array([[ 1, 3, 6],
[ 4, 9, 15],
[ 7, 15, 24]])
- 对于三维输入a, axis=0 (第1行不动,将第1行累加到其他行); axis=1(进入第2层,每个第二层第1行不动,累加到其他行); axis=2(进入最内层,转化成列处理。第1列不动,将其累加到其他列),注意维数从外到内是0-2编号,如下:
>>>import numpy as np
>>> a
[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 20, 30]]]
>>> np.cumsum(a,axis=0)
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 8, 10, 12],
[14, 25, 36]]])
>>> np.cumsum(a,axis=1)
array([[[ 1, 2, 3],
[ 5, 7, 9]],
[[ 7, 8, 9],
[17, 28, 39]]])
>>> np.cumsum(a,axis=2)
array([[[ 1, 3, 6],
[ 4, 9, 15]],
[[ 7, 15, 24],
[10, 30, 60]]])