[我正在尝试建立一个将每个向量的itit相乘并返回带有这些数字的向量的函数,但是我在附加乘法时遇到了问题。
示例:
-输入:
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 np
def 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 result
TypeError: list indices must be integers or slices, not numpy.float64
```
您正在迭代元素,但是在访问时,您正在将元素作为索引传递。所以你得到了错误。
更改下一行
import numpy as np
def list_mult(v1,v2):
result = list()
for i in v1:
for j in v2:
result.append(i * j)
return result
更优雅的解决方案是使用numpy包的np.multiply
函数。
In [37]: np.multiply(vec1,vec2)
Out[37]: array([ 32.4, -87.8, -0. , -52.2, -24.4])
以后编辑:
def list_mult(v1,v2):
return [vec1[i]*vec2[i] for i in range(len(vec1))]
您当前的代码有2个错误:1.您提到的那个=您使用列表索引而不是值本身。