在NumPy中工作时,我了解如何使用this article从3D数组中分割2D数组。在
根据我想要分割的轴:array = [[[0 1 2]
[3 4 5]
[6 7 8]]
[[9 10 11]
[12 13 14]
[15 16 17]]
[[18 19 20]
[21 22 23]
[24 25 26]]]
切片可以给我:
^{pr2}$
但有没有可能以45度角切割?例如:j_slice_down = array[slice going down starting from index 0]
[[0 1 2]
[12 13 14]
[24 25 26]]
我能够在所有3个轴的上升或下降,甚至包裹所有的方式。。。在黑名单上有很多for循环的日子。。。但我相信肯定有更好的办法。在
更新,选择答案:
我选择了hpaulj的答案,用np.arrange创建两个坐标数组。通过一点工作,我可以使它适合我的需求,在任何角度,任何轴上,三维阵列的非对称维度,在任何位置,包括包装所有的方式,使它与轴的尺寸相同。在
为x和y制作了两个np.arrange阵列。在
对np.roll数组x轴数组进行了np.roll、递增、np.hstack和{}等不同的方法。y = y[::-1]为交替角度。在if axis is 'z': #i
slice_notation = np.index_exp[x, y, :]
elif axis is 'y': #k
slice_notation = np.index_exp[x, :, y]
else: #j
slice_notation = np.index_exp[:, x, y]
创建切片表达式,然后使用slice_notation就地执行所需的操作。在
其他建议的方法:np.diagonal和{}可能更适合其他方法,尽管它们可能与我有不同的要求。在