我想这是很简单的,但我不太明白。我有一个大的三维数组,我想用某个因子来减少第3个dim,然后将这些值相加以达到减少的大小。一个能达到我想要的效果的例子是。
import numpy as np
arr=np.ones((10,10,16))
processed_data=np.zeros((arr.shape[0], arr.shape[1]), dtype='object')
factor=2
for i in range(arr.shape[0]):
for j in range(arr.shape[1]):
processed_data[i][j]=arr[i][j].reshape(int(arr.shape[2]/factor),-1).sum(axis=1)
所以我们把最后一个维度,重塑为一个额外的维度,然后沿着这个维度求和。在上面的例子中,数据是一个10x10x16的全部为1的数组,所以用一个系数=2,我们得到一个10x10x8的数组,数据全部为2。我希望这能说明我所要达到的目的。如果因子变为4,我们将得到一个10x10x4的数组。
这种方法并不理想,因为它涉及到创建一个单独的processed_data'object'数组,而我宁愿让它作为一个三维数组,只是减少了第三维。它还涉及到对二维数组中的每一个元素进行迭代,我认为这是没有必要的。而且它真的很慢。
希望得到任何帮助--我怀疑这是一个重塑和转置的组合,但我无法理解它的含义。