n形表与n形数组的乘法

2024-04-25 09:17:55 发布

您现在位置:Python中文网/ 问答频道 /正文

举个例子:

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]

Tags: 函数in示例foroutput参数asnp
1条回答
网友
1楼 · 发布于 2024-04-25 09:17:55

我假设您特别想要使用列表,如果是这样,那么您可以使用下面的一行(我假设您有一个错误,您的意思是输出为[[[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]])

它对应于原始列表的第一个元素。你知道吗

相关问题 更多 >