我正在尝试构建一个函数,将每个向量的 itens 相乘并返回一个带有这些数字的向量,但是我在追加乘法时遇到了问题。例子:-输入:vec1 = np.array([-2.0, -1.0, 0.0, 1.0, 2.0])vec2 = np.array([-16.2, 87.8, -7.199999999999999, -52.2, -12.2])list_mult(vec1,vec2)-输出 :[ 32.4 -87.8 -0. -52.2 -24.4]- 这是我的代码和输出错误:import numpy as npdef list_mult(v1,v2): result = list() for i in v1: for j in v2: result.append(v1[i] * v2[j]) return result输出: 4 for i in v1: 5 for j in v2:----> 6 result.append(v1[i] * v2[j]) 7 return resultTypeError: list indices must be integers or slices, not numpy.float64```
1 回答

肥皂起泡泡
TA贡献1829条经验 获得超6个赞
您正在迭代元素,但在访问时您将元素作为索引传递。所以你得到了错误。
更改以下行
In [38]: import numpy as np
...:
...: def list_mult(v1,v2):
...: result = list()
...: for idx1,i in enumerate(v1):
...: for idx2,j in enumerate(v2):
...: if (idx1 == idx2):
...: result.append(i * j)
...: return result
...:
...:
In [39]: list_mult(vec1,vec2)
Out[39]: [32.4, -87.8, -0.0, -52.2, -24.4]
更优雅的解决方案是使用np.multiplynumpy 包的功能。
In [37]: np.multiply(vec1,vec2)
Out[37]: array([ 32.4, -87.8, -0. , -52.2, -24.4])
添加回答
举报
0/150
提交
取消