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

Python 弹出一维数组的最后一个元素,python,arrays,list,numpy,Python,Arrays,List,Numpy,说到列表s,我们都知道并喜欢good oldpop,它从列表中删除最后一项并返回: >>> x = range(3) >>> last_element = x.pop() >>> last_element 2 >>> x [0, 1] 但是假设我使用一个一维的numpyarray来保存我的项目,因为我做了很多元素计算。那么,对于我来说,实现pop的最有效方法是什么 我当然可以 >>> import num

说到
列表
s,我们都知道并喜欢good old
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]

我不把它算作一行程序,因为它是由两个不同的操作完成的两个不同的任务。句法上的糖分是把一切放在一条线上的东西。这是一个甜蜜的方式来做我已经做了以上。(哈,我确信有人会急忙给出这个答案,事实上,有人已经给出了。这个答案相当于我问:“到商店去比走路更快的方法是什么?”有人回答:“走路,但是走得更快。”呃……谢谢。我已经知道怎么走路了。)

numpy没有这样一句话(除非您自己编写)。
numpy
用于处理固定大小的对象(或更改频率较低的对象)。因此,根据该指标,常规的旧式
python
列表更适合弹出


您的观点是正确的,即使用
numpy
可以更好地执行元素操作。您必须分析代码,看看哪一个性能更好,然后做出设计决策。

对于
numpy
(除非您自己编写)。
numpy
用于固定大小的对象(或更改频率较低的对象)。因此,根据该指标,常规的旧式
python
列表更适合弹出


您的观点是正确的,即使用
numpy
可以更好地执行元素操作。您必须分析代码,看看哪一个性能更好,然后做出设计决策。

对于
numpy
(除非您自己编写)。
numpy
用于固定大小的对象(或更改频率较低的对象)。因此,根据该指标,常规的旧式
python
列表更适合弹出


您的观点是正确的,即使用
numpy
可以更好地执行元素操作。您必须分析代码,看看哪一个性能更好,然后做出设计决策。

对于
numpy
(除非您自己编写)。
numpy
用于固定大小的对象(或更改频率较低的对象)。因此,根据该指标,常规的旧式
python
列表更适合弹出



您的回答是正确的,即使用
numpy
可以更好地执行元素操作。您必须分析您的代码,看看哪个性能更好,然后做出设计决策。

答案很好,但您的推理是“
numpy
适用于固定大小的对象”这里不起作用。
numpy
包括数组的
delete
insert
函数——这些函数可以更改数组的大小——那么为什么不
pop
?它的编写允许更改其对象(通过
delete
insert
)但是,
numpy
并没有很好地优化以不断更改数组的大小。例如,python列表会做得更好。当我说“固定大小的对象”时我指的是在内存分配中不经常更改的对象。例如,矩阵或数组的大小不经常更改,但您可能希望对其或iti执行许多操作。我同意,但这并不能解释缺少
pop
pop
并不意味着“不断更改”数组的作用比
delete
insert
更大。不,但是
delete
insert
更一般,它们允许您以多种不同的方式更改对象。
numpy
的作者在python的“只有一种方法”概念中(我假设)考虑到
numpy
对象可能很少使用
pop
,我认为没有足够的必要使用它。最终我无法完美地解释为什么它不存在于
numpy
中,我没有写它,我只能查看
delete
insert
的代码。这两个都是Python 4+屏幕长的。它们所做的工作与您试图避免的工作完全相同。它们不会更改数组的大小。它们使用索引和/或连接生成新数组。回答得很好,但您的推理是“
numpy
用于固定大小的对象”这里不起作用。
numpy
包括数组的
delete
insert
函数——这些函数可以更改数组的大小——那么为什么不
pop
?它的编写允许更改其对象(通过
delete
insert
)但是,
numpy
并没有很好地优化以不断更改数组的大小。例如,python列表会做得更好。当我说“固定大小的对象”时我指的是在内存分配中不经常更改的对象。例如,矩阵或数组的大小不经常更改,但您可能希望对其或iti执行许多操作。我同意,但这并不能解释缺少
pop
pop
并不意味着“不断更改”数组的作用比
delete
insert
更大。不,但是
delete
insert
更一般,它们允许您以多种不同的方式更改对象。
numpy
的作者在python的“只有一种方法”概念中(我假设)决定不需要足够的
pop