我有一个按最后一列排序的数组,我想在其中使用/显示排在前3位的行。
切片工作和反转第二维(第二个示例)也有效。 但是,当我想反转第一个尺寸(第三个示例)时,会得到空白打印。
我复制了these的示例,但是当我输入一个slice并以-1表示反向时,我也会得到一个空输出。
我可能真的很想念...
arr = np.array ([[8, 2, 4, 6],
[8, 3, 1, 8],
[3, 7, 6, 1],
[9, 4, 2, 4],
[4, 7, 5, 8],
[1, 9, 3, 5],
[1, 3, 9, 111],
[3, 6, 7, 111],
[2, 8, 2, 111],
[4, 5, 9, 3]])
print(arr[0:10,:])
print("###")
# Sort by column 4, then by column 3
lexsorted_index = np.lexsort((arr[:, 2], arr[:, 3]))
a = arr[lexsorted_index]
print(a[0:10:1,::]) #0-10th row each step, all columns
print("###")
print(a[0:10:1,::-1]) #0-10th row each step, all columns reversed
print("###")
print(a[0:3:-1,::]) #0-3rd row reversed, all coloums
答案 0 :(得分:1)
Python slice语法为start:stop:step
,而不是low:high:step
。如果您的步骤是递减计数,则起点是高端,而不是低端。
此外,切片是包含开始和结束的,而不是包含低和高度的,因此,如果要前三行,起始值应为2而不是3,终止值应仅为省略了尽可能地切片(因为-1并不代表您想要的)。
print(a[2::-1])