我想基于内轴拆分nd numpy数组。
我有各种各样的形状 (6,150,29,29,29,1)
(6,150,29,29,29,1)
我想要一个数组列表- [150 arrays of shape (6,29,29,29,1)]
[150 arrays of shape (6,29,29,29,1)]
我使用了list(a),但这给了我0轴的列表。
list(a)
arr.transpose(1,0,2,3,4,5)或np.swapaxes(arr,0,1)将150维放在首位。然后就可以使用了list。
arr.transpose(1,0,2,3,4,5)
np.swapaxes(arr,0,1)
list
或者您可以使用列表理解
[a[:,i] for i in range(150)]
移调效果更好
In [28]: timeit list(arr.transpose(1,0,2,3,4,5)) 47.7 µs ± 47.1 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) In [29]: timeit [arr[:,i] for i in range(150)] 88.7 µs ± 22.2 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) In [32]: timeit list(np.swapaxes(arr,0,1)) 49.2 µs ± 51.1 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)