数组排序、切片和反转返回空

2024-10-03 17:16:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个按最后一列排序的数组,我想在其中使用/显示前3个排序的行

切片工作和反转第二维度(第二个示例)也工作。 然而,当我想要反转第一维度(第三个例子)时,我得到一个空的打印输出

我复制了these示例,但是当我输入一个slice和-1作为reverse时,我也得到了一个空输出

很明显我错过了什么

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 columns 

Tags: columns示例indexby排序stepnpcolumn
1条回答
网友
1楼 · 发布于 2024-10-03 17:16:35

Python切片语法是start:stop:step,而不是low:high:step。如果您的步骤是倒计时,那么起点是高点,而不是低点

另外,切片是start inclusive和stop exclusive,而不是low inclusive和high exclusive,因此如果您想要前3行,那么start值应该是2而不是3,stop值应该被忽略,以便尽可能地切片(因为-1并不意味着您想要什么)

print(a[2::-1])

相关问题 更多 >