我有一个点(484,3,1)的3d numpy数组和一个2d转换矩阵(3,3)。我想计算所有484点的变换。
我试图重塑数组并计算点积,但我一直在努力使其输出一个(484,3,1)形状的数组,其中所有点都经过变换。
points = np.random.randint(0, 979, (484,3,1))
transformation = array([[0.94117647, 0. , 0. ],
[0. , 0.94117647, 0. ],
[0. , 0. , 1. ]])
points.shape = (484,3,1)
transformation = (3,3)
transformation.dot(points).shape = (3,484,1)
我希望对此进行尽可能的优化。任何建议将不胜感激。
答案 0 :(得分:0)
只需重整为def fn(nside):
bar = ProgressBar(maxval = npix)
bar.start()
for i in range(0,npix):
bar.update(i)
for j in range(0,npix):
hpxmap0[hp.ang2pix(nside, ma_theta[i], ma_phi[j])] = gaussian_2D(np.pi*(0.5) - ma_theta[i], ma_phi[j])
bar.finish()
return hpxmap0
的尺寸并使用(484,3)
(np.matmul
也可以,但是由于您要寻找矩阵乘法,因此np.dot
是首选documentation)产品
matmul
最终的形状与最后一次重塑所给出的形状当然是相同的:np.matmul(points.reshape(484,-1), transformation).reshape(484,3,-1)