如何在Python中删除数组的每个其他元素?(与np.repeat()相反?)

28
如果我有一个名为 x 的数组,并执行 np.repeat(x,2),那么我就会实际复制这个数组。
>>> x = np.array([1,2,3,4])    
>>> np.repeat(x, 2)
array([1, 1, 2, 2, 3, 3, 4, 4])

我该如何做相反的操作,以便最终得到原始数组?

它也应该适用于随机数组 y:

>>> y = np.array([1,7,9,2,2,8,5,3,4])  

我该如何删除每隔一个元素,以便最终得到以下结果?

array([7, 2, 8, 3])
2个回答

56

y[1::2] 可以完成此任务。这里通过使用索引 1 来选择第二个元素,然后每隔 2 个元素进行取值。


2
如果你想让y包含这些信息,那么应该这样写:y=y[1::2] - rafee

2
我遇到了一个问题,如果你要求用户输入数组的输入,该怎么办?所以编写一个函数会很有帮助:
因此,编写一个函数对我很有帮助:
def remove_every_other(my_list):
    return my_list[::2]
    pass

这帮助我明白,如果任何用户输入一个数组,我们可以通过调用此函数来处理它。

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