numpy对矩阵操作后,输出的形状与想象的不一样。记个笔记代码
点乘的padding操作容易出错
# # 开发时间: 4:24
import numpy as np
Data = np.array([[1, 2, 255, 255, 0], [255, 255, 0, 0, 3]]) # 2*5
# print(Data)
def get_roi(data, x, y, w, h):
for i in range(len(data)): # range不能丢
for j in range(len(data[0])):
print(data[i, j])
tmp = data[x:w + 1, y:y + h + 1] # array[x:x+w,y:y+h]索引范围为[x:x+w-1,y:y+h-1]
return tmp
print(get_roi(Data, 0, 1, 1, 1)) # [0:2,1:3] ->[0,1,1,2]
A = np.array([[1], [2]]) # 2*1
B = np.array([[1, 2, 4], [1, 4, 5]]) # 2*3
C = np.array([2, 2])
D = np.array([[2], [3]])
print(A.shape)
print(B.shape)
print(C.shape)
# 点乘,自动进行padding操作;对应元素相乘
print(A * B)
print(np.multiply(A, B))
# 叉乘,矩阵乘法
B = np.array(B.reshape(1, np.size(B))) # 1*6
print(np.dot(A, B)) # shape:2*6
# 向量加减法
print(A + D)
print(A - D)
# 元素除法
print(A / D)
# 向量标量运算
print(A + 3)
print(A * 2)
print(np.array([A] * 2)) # 复制操作
# 转置
print(A.shape)
X = A.T
print(X)
print(X.shape)