gpt4 book ai didi

python - 一行中 n 个形状列表与 n 个形状数组的元素相乘

转载 作者:太空宇宙 更新时间:2023-11-03 23:54:23 25 4
gpt4 key购买 nike

举个例子:

w =[1, 2] # as list
p = [[[1, 2], [3, 4]], [[4, 5], [6, 7]]] # as array

输出应该是:

output =[[[1, 2], [3, 4]], [[8, 20], [12, 14]]]

但是,我想在一行中完成它。我正在寻找一个可以接受参数 w 和 p 并返回输出的函数。

使用 for 循环的例子:

dummy_array = np.zeros(shape=(2,2))

for i in range(2):
output[i]= w[i]*p[i]

最佳答案

我假设您特别想使用列表,如果是这样,那么您可以使用以下单行代码(我假设您犯了一个错误,您的意思是输出为 [[[1, 2] , [3, 4]], [[8, 10], [12, 14]]]).

import numpy as np
p = [[[1, 2],[3, 4]], [[4, 5], [6, 7]]]
w = [1, 2]
output = [(np.array(p_curr)*w_curr).tolist() for p_curr, w_curr in zip(p,w)]

如果你想使用 numpy(这通常是这些类型操作的标准包),你可以沿着你喜欢的轴相乘。例如,我们可以这样做:

import numpy as np
p = np.array([[[1, 2], [3, 4]], [[4, 5], [6, 7]]])
w = np.array([1, 2])[:, np.newaxis, np.newaxis]
output = p*w

请注意,我添加了两个新轴,并保留了原始 (2) 维度以与您想要相乘的内容相对应。意思是,如果您获取代码片段并检查 p[0,:,:],您将得到:

array([[1, 2],
[3, 4]])

它对应于原始列表的第一个元素。

关于python - 一行中 n 个形状列表与 n 个形状数组的元素相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58374518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com