array = np.array([[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]])
print(array)
[[[ 1 2]
[ 3 4]]
[[ 5 6]
[ 7 8]]
[[ 9 10]
[11 12]]]
print(array.ndim)
3
print(array.shape)
(3, 2, 2)
print(array.size)
12
print(array.dtype)
int32
array = np.arange(1,13).reshape(2,2,3)
print(array)
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
print(array.ndim)
3
print(array.shape)
(2, 2, 3)
print(array.size)
12
print(array.dtype)
int32
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
3
(2, 2, 3)
12
int32
# 通过随机数生成数据 randint(1,10,12)
array = np.random.randint(1,10,12).reshape(2,2,3)
print(array)
[[[7 5 1]
[2 7 2]]
[[1 7 7]
[5 2 1]]]
print(array.ndim)
3
print(array.shape)
(2, 2, 3)
print(array.size)
12
print(array.dtype)
int32
矩阵中,筛选值大于5,其他用0替换
#矩阵中,筛选值大于5,其他用0替换
array = np.random.randint(1,10,9).reshape(3,3)
print(array)
[[7 5 3]
[1 7 8]
[7 9 8]]
print(np.where(array>5,array,0))
[[7 0 0]
[0 7 8]
[7 9 8]]
array = np.random.randint(1,10,16).reshape(4,4)
print(array)
[[2 7 5 5]
[2 8 2 1]
[6 5 5 9]
[3 1 9 3]]
print(np.where(array>5,array,0))
[[0 7 0 0]
[0 8 0 0]
[6 0 0 9]
[0 0 9 0]]
# 取第一行
print(array[0])
[2 7 5 5]
# 取第一列
print(array[:,0])
[2 2 6 3]
# 取第一行和第三行
print(array[0::2])
[[2 7 5 5]
[6 5 5 9]]
# 取第二列和第四列
print(array[::,1::2])
[[7 5]
[8 1]
[5 9]
[1 3]]
# 取第一行和第三行的第二列和第四列
print(array[0::2,1::2])
[[7 5]
[5 9]]
array = np.random.randint(1,10,20).reshape(4,5)
print(array)
[[9 7 2 9 6]
[9 9 7 2 2]
[2 4 7 7 4]
[8 7 8 3 9]]
print(array.shape[1])
5
# shape[0] 获取array.shape中第一个数
for i in range(0,array.shape[0]):
for j in range(0,array.shape[1]):
print(array[i][j],end="\t")
print()
9 7 2 9 6
9 9 7 2 2
2 4 7 7 4
8 7 8 3 9
基本运算
矩阵内相加
array = np.random.randint(1,10,20).reshape(4,5)
print(array)
[[9 1 4 3 1]
[6 8 5 5 1]
[1 9 7 2 8]
[1 5 8 6 4]]
# 所有值的和
print(array.sum())
94
# 每一列的和
print(array.sum(0))
[17 23 24 16 14]
# 每一行的和
print(array.sum(1))
[18 25 27 24]
数乘:
array = np.random.randint(5,10,20).reshape(4,5)
print(array)
[[5 5 7 9 6]
[6 5 7 6 6]
[9 5 7 6 5]
[5 9 8 7 6]]
print(array*2)
[[10 10 14 18 12]
[12 10 14 12 12]
[18 10 14 12 10]
[10 18 16 14 12]]
两个矩阵相加、减:
array = np.random.randint(1,10,20).reshape(4,5)
array2 = np.ones(20).reshape(4,5)
print(array)
[[7 1 1 7 5]
[7 5 4 9 1]
[3 9 1 1 4]
[3 3 4 9 2]]
print(array2)
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
print(array+array2)
[[ 8. 2. 2. 8. 6.]
[ 8. 6. 5. 10. 2.]
[ 4. 10. 2. 2. 5.]
[ 4. 4. 5. 10. 3.]]
两个矩阵相乘:
两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵 ,它的一个元素
array = np.random.randint(5,10,20).reshape(4,5)
array2 = np.ones(20).reshape(5,4)
print(array)
[[8 7 8 6 5]
[5 6 7 7 5]
[8 6 6 9 9]
[6 9 8 6 7]]
print(array2)
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
array3 = np.dot(array,array2)
print(array3)
[[34. 34. 34. 34.]
[30. 30. 30. 30.]
[38. 38. 38. 38.]
[36. 36. 36. 36.]]
转置:
把矩阵A的行和列互相交换所产生的矩阵称为A的转置矩阵 ,这一过程称为矩阵的转置
array = np.random.randint(5,10,20).reshape(4,5)
print(array)
[[9 9 6 6 7]
[7 8 5 6 7]
[7 7 8 6 6]
[5 6 5 8 7]]
print(array.T)
[[9 7 7 5]
[9 8 7 6]
[6 5 8 5]
[6 6 6 8]
[7 7 6 7]]
图形操作
多维转换成一维:
array = np.random.randint(5,10,20).reshape(4,5)
print(array)
[[7 9 7 7 5]
[7 7 5 5 7]
[5 9 8 6 8]
[5 7 6 7 5]]
print(array.ravel())
[7 9 7 7 5 7 7 5 5 7 5 9 8 6 8 5 7 6 7 5]
将两个同维按行拼接:
numpy.vstack((array,array2)) ==np.column_stack((array2,array))
array = np.random.randint(5,10,20).reshape(4,5)
array2 = np.ones(20).reshape(4,5)
print(array)
[[7 6 7 5 7]
[5 5 6 8 9]
[5 9 9 8 7]
[5 7 5 8 5]]
print(array2)
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
print(np.vstack((array,array2)))
[[7. 6. 7. 5. 7.]
[5. 5. 6. 8. 9.]
[5. 9. 9. 8. 7.]
[5. 7. 5. 8. 5.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
将两个同维按列拼接:
numpy.hstack((array,array2))==np.row_stack((array2,array))
rray = np.random.randint(5,10,20).reshape(4,5)
array2 = np.ones(20).reshape(4,5)
print(array)
[[8 5 9 9 5]
[6 8 5 5 9]
[8 7 9 9 5]
[8 6 8 9 6]]
print(array2)
[[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]
[1. 1. 1. 1. 1.]]
print(np.hstack((array,array2)))
[[8. 5. 9. 9. 5. 1. 1. 1. 1. 1.]
[6. 8. 5. 5. 9. 1. 1. 1. 1. 1.]
[8. 7. 9. 9. 5. 1. 1. 1. 1. 1.]
[8. 6. 8. 9. 6. 1. 1. 1. 1. 1.]]