我现在想做的是:
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
重塑方案具有相似的性能。