4

基本上我想重塑由 numpy.ndarray 表示的张量。

例如,我想做这样的事情(乳胶表示法)

A_{i,j,k,l,m,n,p} -> A_{i,jk,lm,np}

或者

A_{i,j,k,l,m,n,p} -> A_{ij,k,l,m,np}

其中A是一个ndarray。i,j,k,... 表示原始轴。

所以新的轴 2 变成了轴 2 和轴 3 的“扁平化”版本,等等。如果我简单地使用 numpy.reshape,我认为它不知道我要合并哪些轴,所以它看起来模棱两可且容易出错。

是否有任何巧妙的方法可以做到这一点,而不是手动创建另一个 ndarray?

4

1 回答 1

4

使用reshape永远不会模棱两可。它不会改变数据的内存布局。

索引始终使用由形状确定的步幅完成。最右边的轴的步幅为 1,而左边的轴的步幅由其右侧大小的乘积给出。

这对您来说意味着:只要您收集相邻的轴,它就会做“正确”的事情。

于 2013-10-22T05:58:09.720 回答