弹出一维数组的最后一个元素

时间:2015-10-22 17:26:43

标签: python arrays list numpy

说到list,我们都知道并喜欢好的旧pop,它会删除列表中的最后一项并将其返回:

>>> x = range(3)
>>> last_element = x.pop()
>>> last_element
2
>>> x
[0, 1]

但是假设我正在使用一维numpy array来保存我的项目,因为我正在做很多元素计算。那么对我来说最有效的方式是pop

我当然能做到

>>> import numpy as np
>>> x = np.arange(3)
>>> last_element = x[-1]
>>> x = np.delete(x, -1)  # Or x = x[:-1]
>>> last_element
2
>>> x
array([0, 1])

而且,真的,当它归结为它时,这很好。但是我是否缺少一个单行代码来删除最后一项并同时返回它?

我不是要求

>>> last_element, x = x[-1], x[:-1]

我不认为这是一个单行,因为它是由两个不同的操作实现的两个不同的任务。语法糖就是将它全部放在一条线上。这是我做上面已经做过的一种含糖的方式。 (哈,我确信有人会急于把这个作为答案,而且,确实有人有。这个答案相当于我的要求,“去商店比走路更快捷的方式是什么?”有人回答, “走路,但行走得更快。”呃......谢谢。我已经知道如何走路了。)

1 个答案:

答案 0 :(得分:3)

numpy没有这样的衬垫(除非你自己编写)。 numpy旨在处理固定大小的对象(或更改频率较低的对象)。因此,根据该指标,常规旧python list更适合弹出。

对于使用numpy的元素操作更好,你是对的。您将不得不分析您的代码,看看哪些代码更好,并做出设计决定。