如何从Numpy数组中删除最后n行?

7
我正在尝试从一个numpy数组中删除最后几行。我可以使用以下代码删除0到i行。
for i, line in enumerate(two_d_array1):
    if all(v == 0 for v in line):
        pass
    else:
        break

two_d_array2 = np.delete(two_d_array1, slice(0, i), axis=0)

有没有关于如何对数组末尾执行相同操作的建议?
for i, line in enumerate(reversed(two_d_array2)):
    if all(v == 0 for v in line):
        pass
    else:
        break

two_d_array3 = np.delete(two_d_array2, **slice(0, i)**, axis=0)
2个回答

22
你可以使用切片表示法来进行索引。
从数组中删除最后n行的方法:
a = np.array(range(10)).reshape(5, 2)
>>> a
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

n = 2  # Remove last two rows of array.
>>> a[:-n, :]
array([[0, 1],
       [2, 3],
       [4, 5]])

从数组中删除前 {{n}} 行:

>>> a[n:, :]  # Remove first two rows.
array([[4, 5],
       [6, 7],
       [8, 9]])

0

你也可以使用: array_name[:-n] 这是比之前更高效的方法,时间复杂度最佳


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接