繁体   English   中英

将ndarrays列表乘以列表

[英]multiply list of ndarrays by list

我想将一个数字列表乘以一个ndarray,即列表中的每个数字乘以第一个ndarray。 这是列表:

list1 = [840,845,897]

这是 ndarray 的列表

list = df['Example']
list
0     [[nan, nan, nan, 0.854,nan,0.562,0.21615],[nan, nan, nan, 0.854,nan,0.562,0.21615]]
1     [[nan, nan, nan, nan, nan, nan, 0.5196,0.56518,0.165],[nan, nan, nan, nan, nan, nan, 0.816,0.5565518,0.225]
2     [[nan, nan, nan, nan, nan, nan, nan, 0.8528845],[nan, 0.595, nan, nan, 0.2651, nan, nan, 0.8528845],[nan, nan, nan, nan, nan, nan, nan, 0.8516]


我想将列表中的第一项乘以第一个 ndarray。 nan 值仍然是 nan 并且只是乘以浮点数。 我已经尝试过使用 map、lambda function 进行迭代,但我没有成功。 我经常遇到的错误是:TypeError: can't multiply sequence by non-int of type 'str'。 它可以使用新数据创建一个单独的列,或者只是创建一个列表。 结果:

list_new
0     [[nan, nan, nan, 717.36,nan,472.08,181.566],[nan, nan, nan, 717.36,nan,472.08,181.5666]]
1     [[nan, nan, nan, nan, nan, nan, 439.062,477.5771,139.425],[nan, nan, nan, nan, nan, nan, 689.52,470.28,190.125]
2     [[nan, nan, nan, nan, nan, nan, nan, 765.037],[nan, 533.715, nan, nan, 237.79, nan, nan, 765.037],[nan, nan, nan, nan, nan, nan, nan, 763.8852]

您可以像这样遍历数组:

nd = np.array( ... )
for i, x in enumerate(list1):
    for y in nd[i]:
        for j in range(len(y)):
            y[j] *= x
print(nd)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM