重塑numpy数组

时间:2017-07-10 06:14:30

标签: python numpy

我有一个形状为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函数,例如extractwhere?也许你推荐一些不同的东西?谢谢。

4 个答案:

答案 0 :(得分:3)

使用scipynumpy, 指定数组,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}}