numpy 将数组的每一行乘以一个列表,按元素

siotufzp  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(88)

我有一个3维的numpy数组和一个列表,看起来像这样:

array = [  [[1,2,3,10], [4,5,6,11], [7,8,9,12]],   [[1,2,3,10], [4,5,6,11], [7,8,9,12]] ]
lst = [50, 60, 70]

字符串
我想将数组的每一列乘以列表,按元素计算。因此,结果如下所示:

result = [[[50, 100, 150, 500], [240, 300, 360, 660], [490, 560, 630, 840]], [same]]


这对我来说似乎真的很简单,但我不能弄清楚,我迷失在所有可用的方法乘以数组。
np.dot()不工作,因为:TypeError: can't multiply sequence by non-int of type 'numpy.float64'我认为通过理解可能是最糟糕的方法(轴0上的真实的长度是1088)。
我看过this post,但基本上什么都不懂。

pgky5nke

pgky5nke1#

你需要将列表转换为数组并使用broadcasting

out = array * np.array(lst)[:,None]

字符串
输出量:

array([[[ 50, 100, 150, 500],
        [240, 300, 360, 660],
        [490, 560, 630, 840]],

       [[ 50, 100, 150, 500],
        [240, 300, 360, 660],
        [490, 560, 630, 840]]])


使用的输入:

array = np.array([[[1,2,3,10], [4,5,6,11], [7,8,9,12]],
                  [[1,2,3,10], [4,5,6,11], [7,8,9,12]]])
lst = [50, 60, 70]

相关问题