【发布时间】:2020-10-07 15:56:08
【问题描述】:
import numpy as np
arr = np.array([[1, 1, 2, 2], [1, 1, 2, 2], [3, 3, 4, 4], [3, 3, 4, 4]])
def np2dOperations(arr):
a = arr[0:1]
print(a)
b = arr[1:2]
print(b)
c = arr[2:3]
print(c)
d = arr[3:4]
print(d)
e = np.matmul(a,c)
print(e, "e")
f = b*d
x = e.sum()
y = np.amax(f)
print(x)
print(y)
print(x-y)
return x-y
np2dOperations(arr)
我的输出:
[[1 1 2 2]]
[[1 1 2 2]]
[[3 3 4 4]]
[[3 3 4 4]]
Traceback (most recent call last):
File "/Users/bethanne/Documents/NumPy2DOperations.py", line 24, in <module>
np2dOperations(arr)
File "/Users/bethanne/Documents/NumPy2DOperations.py", line 14, in np2dOperations
e = np.matmul(a,c)
ValueError: shapes (1,4) and (1,4) not aligned: 4 (dim 1) != 1 (dim 0)
即使数组 a 和 c 的大小相同,我仍不断收到以下错误“ValueError:形状 (1,4) 和 (1,4) 未对齐:4 (dim 1) != 1 (dim 0)” .结果应该是 x-y 的 16。我尝试在数组 a 上使用 np.transpose ,但这也不起作用。我是使用 numpy 和 python 编程的新手,所以请解释我做错了什么。谢谢!
【问题讨论】:
-
如果你想执行矩阵乘法,那么你应该做
np.matmul(a, c.T)或np.matmul(a.T,c)。如果你想要一个元素产品,那么你可以做a*c或np.dot(a,c)