我正在嘗試構(gòu)建一個函數(shù),將每個向量的 itens 相乘并返回一個帶有這些數(shù)字的向量,但是我在追加乘法時遇到了問題。例子:-輸入: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條經(jīng)驗 獲得超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]
更優(yōu)雅的解決方案是使用np.multiplynumpy 包的功能。
In [37]: np.multiply(vec1,vec2)
Out[37]: array([ 32.4, -87.8, -0. , -52.2, -24.4])
添加回答
舉報
0/150
提交
取消