numpy Python切片和删除函数

hmmo2u0o  于 2022-11-29  发布在  Python
关注(0)|答案(1)|浏览(145)

我不了解切片函数。我想删除某个数字的所有列。

data = np.delete(data, slice(1344,-1), axis = 1)
print(data.shape)
print(data[0,1340:1345])
data = np.delete(data,1344, axis =1 )
print(data.shape)
print(data[0,1340:1345])

如果我这样做,data.shape不知何故没有删除最后一个元素,因此我得到了一个'0',我必须在一个额外的步骤删除。

(200000, 1345)
[435 432 426 438   0]
(200000, 1344)
[435 432 426 438]

如果我将索引减1,

data = np.delete(data, slice(1343,-1), axis = 1)
print(data.shape)
print(data[0,1340:1345])

我仍然在结尾得到一个“0”,但是前面的数字被删除了。

(200000, 1344)
[435 432 426   0]

如何在一行中得到一个大小为(200000,1344)的数组,末尾没有0,而是真实的?

6ie5vjzr

6ie5vjzr1#

对于简单的一维数组:

In [170]: x=np.arange(10)    
In [171]: x[slice(5,-1)]
Out[171]: array([5, 6, 7, 8])

切片本身为:

In [172]: slice(5,-1)
Out[172]: slice(5, -1, None)

相当于:

In [173]: x[5:-1]
Out[173]: array([5, 6, 7, 8])

要从末尾开始获取值,请执行以下操作:

In [174]: x[slice(None,5,-1)]
Out[174]: array([9, 8, 7, 6])
In [176]: x[:5:-1]
Out[176]: array([9, 8, 7, 6])

或删除:

In [177]: np.delete(x,slice(None,5,-1))
Out[177]: array([0, 1, 2, 3, 4, 5])

相关问题