如何在Python中删除数组的最后一列

3
我的数组大小未知,我想删除最后一列。
a = np.array([["A1","A2","A3"],["B1","B2","B3"],["C1","C2","C3"]])

我已经尝试过

a[-1:]

但是它删除了除了最后一行之外的所有行。

我还尝试过

a[:-1]

它删除了最后一行。

我该如何删除最后一列?


最后一列的意思是“A3”,“B3”,“C3”对吗? - huy
1
这回答解决了您的问题吗? [删除NumPy数组的一列] (https://dev59.com/VWw15IYBdhLWcg3wSJzQ) - dspencer
也是 https://stackoverflow.com/questions/35397580/deleting-the-last-column-in-a-python-array 的副本。 - dspencer
3个回答

11

我建议你阅读有关 numpy 数组的基本切片和索引的文档。

试试这个:

arr = a[:, :-1] #--> first two columns of array

注意1:切片操作的结果数组arr只是原始数组a中的视图,不会创建副本。如果您更改arr中的任何实体,则此更改也将在数组a中传播,反之亦然。

例如,更改arr [0,0]的值也会更改a [0,0]的相应值。


注意2: 如果您想要创建一个新的数组,同时删除最后一列,使得一个数组中的更改不应该在另一个数组中传播,您可以使用numpy.delete,它返回沿轴删除子数组的新数组。

arr = np.delete(a, -1, axis=1) # --> returns new array
< p >< strong > >>> arr 输出内容:

[['A1' 'A2']
 ['B1' 'B2']
 ['C1' 'C2']]

0

试试这个:

import numpy as np
a = np.array([["A1","A2","A3"],["B1","B2","B3"],["C1","C2","C3"]])
print(a)

b = np.delete(a, np.s_[-1:], axis=1)
print(b)

输出:

[['A1' 'A2' 'A3']
 ['B1' 'B2' 'B3']
 ['C1' 'C2' 'C3']]

[['A1' 'A2']
 ['B1' 'B2']
 ['C1' 'C2']]


0
如果您想删除最后一列
b = a[:,:2]
'''array([['A1', 'A2'],
   ['B1', 'B2'],
   ['C1', 'C2']], dtype='<U2')'''

如果您想删除最后一行。
c = a[:2]
'''array([['A1', 'A2', 'A3'],
   ['B1', 'B2', 'B3']], dtype='<U2'''

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接