在Python中通过索引删除数组的列

在Python中通过索引删除数组的列,python,arrays,indexing,numpy,Python,Arrays,Indexing,Numpy,我试图通过索引删除数组中的观察值。我得到的是: import numpy as np test = np.ones([1, 1001]) 我想做的是返回一个与test相同的数组,但删除了第5个观察值(即test[0:4和6:])。有没有简单的方法可以做到这一点?您可以使用切片和: 请注意,您的索引关闭了一个:test[0:4和6://code>将删除两个元素而不是一个元素。您可以使用切片和: 请注意,您的索引关闭了一个:test[0:4和6:://code>将删除两个元素而不是一个。Numpy

我试图通过索引删除数组中的观察值。我得到的是:

import numpy as np
test = np.ones([1, 1001])
我想做的是返回一个与test相同的数组,但删除了第5个观察值(即test[0:4和6:])。有没有简单的方法可以做到这一点?

您可以使用切片和:

请注意,您的索引关闭了一个:
test[0:4和6://code>将删除两个元素而不是一个元素。

您可以使用切片和:


请注意,您的索引关闭了一个:
test[0:4和6:://code>将删除两个元素而不是一个。

Numpy has
delete
,请参阅


在您的情况下,
numpy.delete(test,5,axis=1)
应该执行此操作:元素未被就地删除,函数返回一个没有第5列的新数组。

Numpy已
删除
,请参阅

在您的情况下,
numpy.delete(test,5,axis=1)
应该执行此操作但是:元素没有被就地删除,函数返回一个没有第5列的新数组。

另一种选择是使用该数组,这取决于您的应用程序,可以提高速度,因为您不必删除条目和/或创建新的
ndarray
,这在numpy中是非常昂贵的操作

例如:

import numpy as np

test = np.ones([1, 1001])
mask = np.zeros((1, 1001))
mask[:,4] = 1
result = np.ma.masked_array(test, mask)
第五个元素现在被屏蔽,可以对
result
执行各种操作,如方法
sum()
mean()
。更多信息在我给你的链接。如果您想要一个真正的
ndarray
,只需调用
result.compressed()
。然而,这将执行分配新内存和向其中复制数据的昂贵工作

屏蔽阵列可能对这个特定问题没有好处,但知道它们的存在是件好事。

另一种选择是使用它,根据您的应用程序,它可以提高速度,因为您不必删除条目和/或创建新的
ndarray
,这在numpy中是非常昂贵的操作

例如:

import numpy as np

test = np.ones([1, 1001])
mask = np.zeros((1, 1001))
mask[:,4] = 1
result = np.ma.masked_array(test, mask)
第五个元素现在被屏蔽,可以对
result
执行各种操作,如方法
sum()
mean()
。更多信息在我给你的链接。如果您想要一个真正的
ndarray
,只需调用
result.compressed()
。然而,这将执行分配新内存和向其中复制数据的昂贵工作


屏蔽阵列可能对这个特定问题没有好处,但知道它们的存在是件好事。

非常感谢,非常感谢。非常感谢,非常感谢。