1.数组的建立
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
- object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列。
- dtype 数组的所需数据类型,可选。
- copy 可选,默认为true,对象是否被复制。
- .order C(按行)、F(按列)或A(任意,默认)。
- subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
- ndimin 指定返回数组的最小维数。
一维数组
创建数组
(1)创建任意维度数组
b = np.array([[1,2],[3,4]])
(2)最小维度限制
c = np.array([1,2,3,4,5], ndmin= 2)
(3)数据类型限定
d = np.array([0,1,2,3,4], dtype = complex) #dtype根据数据类型进行转化
(4)建立结构化数组
student = np.dtype([('name','S20'),('age','i1'),('marks','f4')])
ab= np.array([('abc',21,50),('xyz',18,75)], dtype =student)
2.对数组的操作
a = np.array([[1,2],[3,4],[5,6]])
(1)数组的元素个数
a.size
(2)数组形状
a.shape #shape[0]:行数,shape[1]:列数
(3)数组元素类型
a.dtype
(4) 改变数组的形状
#创建一维矩阵(个数为10)
ones_10 = np.ones(10)
#改变矩阵为(2,5)维
ones_2_5 = ones_10.reshape(2,5)
3.创建特殊数组
(1)创建5行6列数值全为1的数组
array_one = np.ones([5,6])
(2)创建5行6列数值全为0的数组
array_zero = np.zeros([5,6])
(3) 创建三行四列随机数组(数值在0-1之间)
array_random = np.random.rand(3,4)
array_random = np.random.randn(3,4) #高斯正态分布随机数组
(4) 创建(4,4)的对角矩阵
eye_4 = np.eye(4)
4.数组的计算
(1)条件运算
a = 6*np.random.random(6)
a>3
np.where(a > 3,6,0) #数组a中大于3的,替换成6,小于3的替换成0
(2) 统计运算
①计算数组的最大值/最小值
a = np.array([[1,2],[3,4]]) #创建一个(2,2)数组
print("整个数组的最大值:",np.max(a)) #整个数组的最大值
print("每一列的最大值",np.max(a,axis = 0)) #每一列的最大值
print("每一行的最大值",np.max(a,axis = 1)) #每一行的最大值
#求最小值是将max换成min即可
②计算数组的平均值
a = np.array([[1,2],[3,4]]) #创建一个(2,2)数组
print("整个数组的平均值:",np.mean(a)) #整个数组的平均值
print("每一列的平均值",np.mean(a,axis = 0)) #每一列的平均值
print("每一行的平均值",np.mean(a,axis = 1)) #每一列的平均值
③计算数组的标准差
a = np.array([[1,2],[3,4]]) #创建一个(2,2)数组
print("整个数组的标准差:",np.std(a))
print("每一列的标准差",np.std(a,axis = 0))
print("每一行的标准差",np.std(a,axis = 1))
#方差为:np.var()
④计算数组的和
a = np.array([[1,2],[3,4]]) #创建一个(2,2)数组
print("整个数组的和:",np.sum(a))
print("每一列的和",np.sum(a,axis = 0))
print("每一行的和",np.sum(a,axis = 1))
5.矩阵运算
(1)矩阵乘法
a = np.array([[1,2],[3,4],[5,6]]) #创建一个(3,2)矩阵
b = np.array([[1,2,3],[4,5,6]]) #创建一个(3,2)矩阵
np.dot(a,b) #两矩阵相乘得到(3,3)矩阵
(2)矩阵内数值的运算
①两个矩阵相加
a + c #a与c是同一种数组
②矩阵内各数值+2
a + 2
np.add(a,2) #两种方法均可
③矩阵乘以一个常数2
a * 2
④两个矩阵对应元素相乘
a * c
np.multiply(a,c) #两种方法均可
(3)矩阵行列式运算
a = np.array([[1,2],[3,4]])
np.linalg.det(a)
(4)求解矩阵方程式
对于这个方程式:
A = np.array([[1,1,1],[0,2,5],[2,5,-1]])
B = np.array([[6],[-4],[27]])
C=np.linalg.solve(A,B)
(5)矩阵的逆
x = np.array([[1,2],[3,4]])
y = np.linalg.inv(x)
(6)矩阵转置
x = np.array([[1,2],[3,4]])
x.T #或者np.transpose(x)
6.高级操作
(1)矩阵拼接
a = [[1,2,3,4],
[6,7,8,9]]
b = [[1,2,3,4],
[6,7,8,9]]
#垂直拼接
result_v = np.vstack((a,b))
print("垂直拼接结果为:\n",result_v)
#水平拼接
result_h = np.hstack((a,b))
print("水平拼接结果为:\n",result_h)