在 Python 中使用 for 在列表中附加浮点数

我正在尝试构建一个函数,将每个向量的 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 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

```


哔哔one
浏览 195回答 1
1回答

肥皂起泡泡

您正在迭代元素,但在访问时您将元素作为索引传递。所以你得到了错误。更改以下行 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])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python