Numpy是python的基础,提供两种基本对象:ndarray和ufunc。ndarray是存储单一数据类型的多维数组,而ufunc是能够对数组进行处理的函数
导入Numpy模块
import numpy as np
1.1生成ndarray的方式
1.从已有数据中创建
(1)将列表转换为ndarray
import numpy as np
list = [1,2,3,4,5]
nd = np.array(list)
(2)嵌套列表可以转化为多维
import numpy as np
list = [[1,2,3,4],[2,3,4,5]]
nd = np.array(list)
生成二维ndarray
2.利用random模块生成ndarray
3.创建特定形状的多维数组
import numpy as np
#全是0的3*3矩阵
nd1 = np.zeros([3,3])
#全是1的3*3矩阵
nd2 = np.ones([3,3])
#3阶单位矩阵
nd3 = np.eye(3)
#3阶对角矩阵
nd4 = np.diag([1,2,3])
4.利用arange函数
arange格式为:arange([start,] stop[,step,],dtype=None)。
start和stop指定范围,step指定步长,start默认为0,步长step可为小数
1.2矩阵操作
import numpy as np
nd1 = np.arange(9).reshape([3,3])
#转置
np.transpose(nd1)
#矩阵乘法运算
a = np.arange(12).reshape([3,4])
b = np.arange(8).reshape([4,2])
a.dot(b)
#矩阵的迹
a.trace()
#计算行列式
np.linalg.det(nd1)
#计算逆矩阵
c = np.random.random.([3,3)
np.linalg.solve(c,np.eye(3))
1.3数据合并与展平
1.合并一维数组
c = np.append(a,b)
#a,b是一位数组,也可以用concatenate方法合并
d = concatenate([a,b])
2.多维数组的合并
#按行合并
c = np.append(a,b,axis=0)
#按列并
d = np.append(a,b,axis=1)
3.矩阵展平
#按列优先展平
nd.ravel('F')
#按行优先展平
nd.ravel()
1.4广播机制
广播机制方便不同shape的数组进行数学运算
import numpy as np
a = np.arange(10)
b = np.arange(10)
#两个shape相同的数组相加
print(a+b)
#一个数组与一个标量相加
print(a+3)
#两个向量相乘
print(a*b)
#多维数组之间的运算
c = np.arange(10).reshape([5,2])
d = np.arange(2).reshape([1,2])
print(c+d)
输出为:
[ 0 2 4 6 8 10 12 14 16 18]
[ 3 4 5 6 7 8 9 10 11 12]
[ 0 1 4 9 16 25 36 49 64 81]
[[ 0 2]
[ 2 4]
[ 4 6]
[ 6 8]
[ 8 10]]