是否有更 Pythonic/优雅的方式来扩展 Numpy 数组的维度?

XYZ*_*YZT 6 python arrays numpy multidimensional-array

我现在想做的是:

x = x[:, None,  None,  None,  None,  None,  None,  None,  None,  None]
Run Code Online (Sandbox Code Playgroud)

基本上,我想将我的 Numpy 数组扩展 9 维。或者一些 N 维,其中 N 可能事先不知道!

有一个更好的方法吗?

Div*_*kar 5

一种替代方法可能是reshaping-

x.reshape((-1,) + (1,)*N)  # N is no. of dims to be appended
Run Code Online (Sandbox Code Playgroud)

因此,基本上对于None's对应于单例维度的那些,我们使用的是1沿着这些暗淡的长度形状。对于第一轴中,我们使用的形状-1,以所有元素推到它。

样品运行 -

In [119]: x = np.array([2,5,6,4])

In [120]: x.reshape((-1,) + (1,)*9).shape
Out[120]: (4, 1, 1, 1, 1, 1, 1, 1, 1, 1)
Run Code Online (Sandbox Code Playgroud)