有没有一种更python /优雅的方式来扩展Numpy数组的维度?



我现在想做的是:

x = x[:, None,  None,  None,  None,  None,  None,  None,  None,  None]

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

有更好的方法吗?

另一种方法是使用reshaping -

x.reshape((-1,) + (1,)*N)  # N is no. of dims to be appended

因此,基本上对于对应于单维的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)

要简化表达式(并使其适用于运行时选择的任意维度),您可以动态生成索引:

x = x[(slice(None),)+(None,)*9]

如果你想把你的切片放到一个不同的位置,索引元组可以相应地调整。

注意,在性能方面没有任何好处。这只是更简洁的写作,甚至可能比写出None s

可读性更差。

重塑方案具有相似的性能。

相关内容

  • 没有找到相关文章

最新更新