目录
目录
引入numpy模块
import numpy as np
array = np.array([[1, 2, 3], [2, 3, 4]])
print(array)
print('维数:', array.ndim)
print('shape:', array.shape)
print('size:', array.size)
矩阵数组的创建
# 创建矩阵数组
array = np.array([1, 2, 3], dtype=np.int) # 整数形式创建数组
a = np.array([[1, 2, 3], [2, 3, 4]]) # 二维矩阵的创建
b = np.zeros((2, 3)) # 创建两行三列的0矩阵
c = np.ones((2, 3)) # 创建两行三列的1矩阵
d = np.empty((3, 4)) # 创建两行三列的空矩阵
d = np.arange(10, 20, 2) # 创建10到20步长为2的矩阵
d = np.arange(12).reshape((3, 4)) # 创建12个数字三行四列的矩阵
d = np.linespace(1, 10, 5) # 将1-10分成5段
c = np.random.random((5,2, 3))
# 创,5维2行3列随机数矩阵两个random[[0.82728197 0.54369334 0.73432073] [0.56913164 0.85886651 0.59392416]]
e= np.random.randint(1,10,2,size=(2, 3))
#random.random生成随机数不指定范围,指定形状
#random.randint生成随机数指定范围,1,10从1-10选取,步长为2,形状2*3
基础运算
# 基础运算
a = np.array([10, 20, 30, 40])
b = np.array([1, 2, 3, 4])
print('a+b=', a + b) # a+b= [11 22 33 44]
print('b**2', b ** 2) # b**2 [ 1 4 9 16]
print('10*np.sin(a)=', 10 * np.sin(a)) # 三角函数的使用[-5.44021111 9.12945251 -9.88031624 7.4511316 ]
print('判断哪些值小于3', b < 3) # 布尔运算判断哪些值小于3 [ True True False False]
矩阵运算
# 矩阵运算
a = np.array([[1, 0], [0, 1]])
b = np.array([[1, 2], [3, 4]])
print('元素对位相乘a*b=', a * b) # [[1 0] [0 4]]
print('矩阵相乘两种表达方式=', np.dot(a, b), a.dot(b)) # 矩阵相乘a*b= [[1 2] [3 4]]
np.sum(a, axis=0) # 求和,axis0为列,1为行,此处为求列和
np.max(a, axis=1) # 求最大
np.min(a) # 求最小
d = np.arange(12).reshape((3, 4)) # 创建12个数字三行四列的矩阵[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]]
print(np.transpose(d)) # 矩阵转置
print(np.argmin(d)) # 求最小值的索引
print(np.argmax(d)) # 求最大值的索引
print('求平均的两种方式,mean或者average', d.mean(), np.mean(d))
print(np.median(d)) # 求中位数
print(np.cumsum(d)) # 逐个累加的值[ 0 1 3 6 10 15 21 28 36 45 55 66]
print(np.diff(d)) # 相邻两个的差
print(np.nonzero(d)) # 找出非零的数
print(np.sort(d)) # 排序
print(np.clip(d, 5, 9))
# 小于5的都作为最小值5,大于9的作为最大值9,中间保留[[5 5 5 5][5 5 6 7][8 9 9 9]]
print(np.flatten(d) #把矩阵转化为一行的矩阵迭代器[ 0 1 2 3 4 5 6 7 8 9 10 11]
元素的索引
d = np.arange(12).reshape((3, 4)) # 创建12个数字三行四列的矩阵[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]]
print(d[2][1], d[2, 1]) # 输出第二行第一列,注意从0开始数,结果为9
print(d[2, :]) # 打印第二行
print(d[:, 1]) # 打印第一列
d = np.arange(12).reshape((3, 4)) # 创建12个数字三行四列的矩阵[[ 0 1 2 3][ 4 5 6 7][ 8 9 10 11]]
print(d[2][1], d[2, 1]) # 输出第二行第一列,注意从0开始数,结果为9
print(d[2, :]) # 打印第二行
print(d[:, 1]) # 打印第一列
for row in d: # 对行迭代
print(row)
for column in d.T: # 对列迭代,先转置
print(column)
for item in d.flat: # 对每一个元素按顺序迭代结果 0 1 2 3 4 5 6 7 8 9 10 11
print(item, end=' ')
合并
A=np.array([1,1,1])
B=np.array([2,2,2])
print(np.vstack(A,B)) # 上下合并vertical,合成两行三列的矩阵
print(np.hstack(A,B)) # 左右合并horizontal,合成1行6列的矩阵
A.T # 并不能把序列变为矩阵
print(A[:, np.newaxis]) # 相当于给A这个序列加了一个列的维度,原来的元素作为行
print(A[np.newaxis, :]) # 相当于给A这个序列加了一个行的维度,原来的元素作为列
np.concatenate((A, B, B, A),axis=0)
# 可以定义在哪个维度进行合并,0为行并(上下),1为列并(左右)
分割
np.split(A, 3, axis=1) # 将矩阵A分为等分2部分,方向为纵向,必须为等分
np.array_split(A, 2, axis=1) # 可进行不等分分割
# 简化函数
np.vsplit(A, 3) # 纵向分成三块
np.hsplit(A, 2) # 横向分成三块
复制
a=[1,2,3,4]
b=a
c=b
#改变a, c,b,都会跟着改变
#如果只想把值引用过来,
d=a.copy()#deep copy,此时改变a的值,d不会跟着改变