1 回答
TA贡献1757条经验 获得超7个赞
所以你的问题实际上是关于如何遍历列表并调用np.dot每个对应的对。这是一种方法,使用列表理解和zip:
>>> import numpy as np
>>> list1 = np.array([[1,2],[3,4]])
>>> list2 = list1.copy()
>>> list_of_results = [np.dot(a,b) for a,b in zip(list1, list2)]
>>> list_of_results
[5, 25]
如果你不熟悉列表理解,我建议你查一下。但是你也可以用一个简单的 for 循环来做到这一点:
assert list1.shape == list2.shape, "List shapes do not match"
results = []
for inner_list_index in range(list1.shape[0]):
a = list1[inner_list_index]
b = list2[inner_list_index]
res = np.dot(a,b)
results = results.append(res)
这可以减少到更少的行:
>>> assert list1.shape[0] == list2.shape[0]
>>> results = []
>>> for i in range(list1.shape[0]):
... results.append(np.dot(list1[i], list2[i]))
...
>>> results
[5, 25]
请注意,这两种方法都返回一个 normal list,而不是一个 numpy ndarray。这是因为附加到 numpy 数组通常不会太快。你可以用np.append()。或者np.array(),如果您再次需要它作为 np 数组,则仅适用于结果。
添加回答
举报