我有一个形状为X
的numpy数组(20000,3):
X = array([[ 3, 8, 4],
[ 1, 2, 4],
...
[ 5, 8, 4],
[ 3, 9, 4]])
我想放弃最后一栏' (即4
所在的位置),得到这样的东西:
X = array([[ 3, 8],
[ 1, 2],
...
[ 5, 8],
[ 3, 9]])
我是否需要使用列表推导来执行此操作(即迭代数组元素,将结果保存到list
并将list
转换为array
,或者我可以使用构建-in numpy函数,例如extract
或where
?也许你推荐一些不同的东西?谢谢。
答案 0 :(得分:3)
使用scipy
或numpy
,
指定数组,column_to_delete,row / column
scipy.delete(X, 2, 1) #(np.array, index, axis)
numpy.delete(X, 2, 1) # would give the same result
答案 1 :(得分:2)
您需要做的就是挑选原始数组:
X = np.array([[ 3, 8, 4],
[ 1, 2, 4],
[ 5, 8, 4],
[ 3, 9, 4]])
newX = np.array(X[:,:-1])
这里我选择了除原始数组的最后一列之外的所有行和所有行。然后,另外我已经使它成为一个新的数组(额外的np.array()
包装),以确保它获得新的内存。否则,它只是原始数组的视图,newX
的任何更新也会影响X
。
答案 2 :(得分:1)
import numpy
X = numpy.array([[ 3, 8, 4],
[ 1, 2, 4],
[ 5, 8, 4],
[ 3, 9, 4]])
XX = X[:,:-1]
print(XX)
# [[3 8]
# [1 2]
# [5 8]
# [3 9]]
答案 3 :(得分:1)
你需要做切片操作。
{{1}}