Python 3D数组与1D向量相乘

1 投票
2 回答
1162 浏览
提问于 2025-04-18 09:19

我想把一个大小为[12x256x256]的数组和一个大小为[12]的数组相乘。这个想法是,第一个数组是12个[256x256]的数组堆叠在一起,而第二个数组是一组一维的标量(简单来说就是一串数字)。所以如果第二个数组是[1,2,3,4,...,12],那么我想把3D数组的第一层乘以1,第二层乘以2,依此类推。

我该怎么做呢?

2 个回答

0

numpy 中,你可以这样做:

# let m be 12x256x256, n be 12
m = np.array(m)
n = np.array(n)
(m.swapaxes(0,2) * n).swapaxes(2,0)
3

你可以添加新的轴并对它们进行相乘。

import numpy as np    
a = np.ones((12,256,256))
b = np.array(range(12))+1
c = a * b[:, np.newaxis, np.newaxis]

撰写回答