修改Numpy数组的更快方法

时间:2019-04-04 17:16:57

标签: python numpy

我有一个大的numpy数组,具有400万行和4列(shape =(4000000,4))

我需要根据第四列中的值来修改/减少行数。 例如,我的数据集中的几行内容如下:

a = np.array([[1.32, 24.42, 224.21312, 0],[1.32, 24.42, 224.21312, 0],[1.32, 24.42, 224.21312, 1],[1.32, 24.42, 224.21312, 1],[1.32, 24.42, 224.21312, 0]]);

我的结果应为以下内容(仅最后一列值为1的行)

b = [1.32, 24.42, 224.21312, 1],[1.32, 24.42, 224.21312, 1]

要遍历每一行的for循环要花费很长时间。

我有200个这样的数组,所以我已经为每个数组使用了多重处理。

正在寻找建议。

2 个答案:

答案 0 :(得分:3)

这对您有用吗?

a[a[:,3] == 1]

给予:

array([[  1.32   ,  24.42   , 224.21312,   1.     ],
       [  1.32   ,  24.42   , 224.21312,   1.     ]])

答案 1 :(得分:0)

您可以将其转换为dataframe并在那里进行操作,然后转换回数组:

df = pd.DataFrame(a)
df = df[df[3] == 1]
a = df.as_matrix()

输出:

array([[  1.32   ,  24.42   , 224.21312,   1.     ],
       [  1.32   ,  24.42   , 224.21312,   1.     ]])