Python 3D数组与1D向量相乘
我想把一个大小为[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]