Let a
是一些(不一定是一维)NumPy 数组n * m
沿其最后一个轴的元素。我希望沿着它的最后一个轴“分割”这个数组,以便我将每个n
'第一个元素从0
直到......为止n
.
明确地让a
有形状(k, n * m)
然后我想构造形状数组(n, k, m)
np.array([a[:, i::n] for i in range(n)])
我的问题是,虽然这确实返回了我想要的数组,但我仍然觉得可能有一个更高效、更简洁的 NumPy 例程。
Cheers!
我认为这可以满足您的要求,没有循环。我测试了 2D 输入,可能需要对更多维度进行一些调整。
indexes = np.arange(0, a.size*n, n) + np.repeat(np.arange(n), a.size/n)
np.take(a, indexes, mode='wrap').reshape(n, a.shape[0], -1)
在我的测试中,它比您原来的列表解决方案慢一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)