Python numpy数组和列表之间是否可以相互转换?

Python numpy数组和列表之间是否可以相互转换?,python,arrays,list,numpy,Python,Arrays,List,Numpy,可以将numpy数组转换为如下列表: a = np.array([x,y,z,...]) b = a.tolist() 我可以通过定义一个新数组进行转换: c = np.array(b) 是否可以在不创建新数组/列表的情况下进行此转换?因此,它将提供以下不存在的功能: a = np.array([x,y,z,...]) a.tolist() a.np.array() 本质上,我有一个for循环,在这个循环中,我对numpy数组进行一些数学运算,以确定要删除哪个元素。但是我必须在没有这个元素

可以将numpy数组转换为如下列表:

a = np.array([x,y,z,...])
b = a.tolist()
我可以通过定义一个新数组进行转换:

c = np.array(b)
是否可以在不创建新数组/列表的情况下进行此转换?因此,它将提供以下不存在的功能:

a = np.array([x,y,z,...])
a.tolist()
a.np.array()
本质上,我有一个for循环,在这个循环中,我对numpy数组进行一些数学运算,以确定要删除哪个元素。但是我必须在没有这个元素的情况下进行下一次迭代。我需要列表的易变性,比如:

values.tolist()
values.pop(start_size + i)
values=np.array(values)
或者能够做这样的事情(这同样不起作用):


您可以使用
np.r\ucode>创建一个漂亮的切片来完成
pop

values = np.arange(5)
i = 2

popped = values[i]
values = values[np.r_[0:i, i+1:values.size]]


print(values, popped)

[0 1 3 4] 2

您可以使用
np.r\ucode>创建一个漂亮的切片来完成
pop

values = np.arange(5)
i = 2

popped = values[i]
values = values[np.r_[0:i, i+1:values.size]]


print(values, popped)

[0 1 3 4] 2

正如@hpaulj已经提到的,不可能有一个像数组一样的列表。从您对问题的描述来看,似乎您可以使用遮罩阵列实现相同的效果。下面是一个小示例,我依次从数组中删除最小的元素:

import numpy
import numpy.ma

a = numpy.ma.array([5, 3, 4, 2, 5, 1, 6])
for i in range(3):
    minelement = numpy.argmin(a)
    a[minelement] = numpy.ma.masked
output = a.compressed()

正如@hpaulj已经提到的,不可能有一个像数组一样的列表。从您对问题的描述来看,似乎您可以使用遮罩阵列实现相同的效果。下面是一个小示例,我依次从数组中删除最小的元素:

import numpy
import numpy.ma

a = numpy.ma.array([5, 3, 4, 2, 5, 1, 6])
for i in range(3):
    minelement = numpy.argmin(a)
    a[minelement] = numpy.ma.masked
output = a.compressed()

我认为这个问题中的应用程序需要解决一个问题,即从数组中删除一个元素并定义一个同名数组

e、 g.将2从a中移除

a = np.array([0,1,2,3,4])
b = a[0:2]
c = a[3:]
a = np.append(b,c)

不幸的是,我遇到了一个更大的问题,即更新循环末尾的数组“值”不会更改循环中I的最后一个值,这是len(值)的函数。。。我得到一个错误。

我认为这个问题中的应用程序有一个解决方法,即从数组中删除一个元素并定义一个同名数组

e、 g.将2从a中移除

a = np.array([0,1,2,3,4])
b = a[0:2]
c = a[3:]
a = np.append(b,c)

不幸的是,我遇到了一个更大的问题,即更新循环末尾的数组“值”不会更改循环中I的最后一个值,这是len(值)的函数。。。我有一个错误。

没有。这两个操作每次都会生成新对象。底层的数据结构太不一样了。如果您扩展了需要执行的计算类型,这可能会有所帮助。可能存在“删除”元素而不实际删除的方法。即使有一个列表,中间的“POP”也不是便宜货。这两个操作每次都会生成新对象。底层的数据结构太不一样了。如果您扩展了需要执行的计算类型,这可能会有所帮助。可能存在“删除”元素而不实际删除的方法。即使有一个列表,中间的“POP”也不便宜。每当弹出一个值时,它仍然会创建新的数组对象。每当弹出一个值时,它仍然会创建新的数组对象。我以前从未使用过屏蔽数组(这里是初学者)。能否将新数组的长度输入for循环的上限?我正在迭代删除外围数据。因此,每次移除外围数据点时,我都必须在新数组上应用循环。数组的长度保持不变,只是一些元素被标记为无效,并且不参与
numpy
操作,如我的示例所示。如果您要删除异常值,是否要一直删除,直到某个停止条件为真?我以前从未使用过掩码数组(这里是初学者)。能否将新数组的长度输入for循环的上限?我正在迭代删除外围数据。因此,每次移除外围数据点时,我都必须在新数组上应用循环。数组的长度保持不变,只是一些元素被标记为无效,并且不参与
numpy
操作,如我的示例所示。如果你要删除异常值,难道你不一直删除直到某个停止条件为真吗?通过思考你试图解决的实际问题,然后在一个新问题中描述它,你将节省你自己和我们很多时间。您现在在解决y问题的过程中遇到了两个x问题:。最好的问题是从一个大的顶级问题“我正在尝试删除连续的异常值”开始,然后询问中间问题“循环运行到len(值),但我使值变小”.你可以思考你要解决的实际问题,然后用一个新问题来描述,这样可以节省你自己和我们很多时间。您现在在解决y问题的过程中遇到了两个x问题:。最好的问题是从一个大的顶级问题“我正在尝试删除连续的异常值”开始,然后询问中间问题“循环运行到len(值),但我使值变小”。