def poprow(my_array,pr):
""" row popping in numpy arrays
Input: my_array - NumPy array, pr: row index to pop out
Output: [new_array,popped_row] """
i = pr
pop = my_array[i]
new_array = np.vstack((my_array[:i],my_array[i+1:]))
return [new_array,pop]
def popcol(my_array,pc):
""" column popping in numpy arrays
Input: my_array: NumPy array, pc: column index to pop out
Output: [new_array,popped_col] """
i = pc
pop = my_array[:,i]
new_array = np.hstack((my_array[:,:i],my_array[:,i+1:]))
return [new_array,pop]
tmp_array_for_popfunc = 1d_array
def array_pop():
global tmp_array_for_popfunc
r = tmp_array_for_popfunc[0]
tmp_array_for_popfunc = np.delete(tmp_array_for_popfunc, 0)
return r
请使用以下命令进行检查-
print(len(tmp_array_for_popfunc)) # confirm initial size of tmp_array_for_popfunc
print(array_pop()) #prints return value at tmp_array_for_popfunc[0]
print(len(tmp_array_for_popfunc)) # now size is 1 smaller
9条答案
按热度按时间u3r8eeie1#
没有用于NumPy数组的
pop
方法,但您可以只使用基本切片(这将非常有效,因为它返回一个视图,而不是一个副本):如果有
pop
方法,它将返回y
中的last
值,并修改y
。上图,
将最后一个值赋给变量
last
并修改y
。pbpqsu0x2#
以下是使用
numpy.delete()
的一个示例:vaj7vani3#
NumPy数组不存在POP,但您可以将NumPy索引与数组重构结合使用,例如hSTACK/vSTACK或numpy.ete(),以模拟POP。
下面是我能想到的一些示例函数(当索引为-1时,这些函数显然不起作用,但您可以用一个简单的条件来修复它):
这将返回不带弹出的行/列的数组,以及单独弹出的行/列:
6vl6ewon4#
与List不同,对于NumPy数组,没有任何
pop()
方法,以下是您可以尝试的一些替代方法-delete()
语法-
np.delete(arr, obj, axis=None)
arr
:输入数组obj
:要删除的行号或列号axis
:要删除的轴lyr7nygr5#
重要的是,它从原始数组中取出一个并将其删除。如果您没有找到单个方法的表面实现来完成该过程,下面的代码将完成您想要的操作。
b4wnujal6#
在Numpy中检索和删除随机物品的最“优雅”解决方案是:
对于好奇的程序员:
Np.where()方法返回两个列表。第一个函数返回匹配元素的行索引,第二个函数返回列索引。这在搜索二维数组中的元素时很有用。在我们的例子中,第一个返回列表的第一个元素很有趣。
1wnzp6jl7#
unutbu对此有一个simple answer,但是POP()也可以将索引作为参数。这就是用NumPy复制它的方式:
3zwtqj6y8#
此外,如果您想为NumPy 2D数组中的行或列实现POP,您可以这样做:
对于ROW:
yebdmbv49#
好的,由于我没有看到返回第一个元素并将其从原始数组中删除的好答案,我编写了一个简单的(如果笨拙的)函数,将
global
用于一维数组(对于Multidims需要进行修改):请使用以下命令进行检查-