【问题标题】:multiply list of ndarrays by list将ndarrays列表乘以列表
【发布时间】:2021-07-30 15:30:00
【问题描述】:

我想将一个数字列表乘以一个 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 函数、for 迭代,但没有成功。我经常遇到的错误是: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]

【问题讨论】:

    标签: python arrays pandas list


    【解决方案1】:

    你可以像这样循环数组:

    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)
    

    【讨论】:

    • 这很好,但我失去了 nd 的维度。它只有一个维度,[[nd]] @iota
    • @AntonioGL 你是什么意思?
    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多