修改numpy数组的更快方法

2024-04-19 00:02:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大的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个这样的数组,所以我已经在为每个数组使用多处理了。你知道吗

寻找建议。你知道吗


Tags: 数据numpyfornp数组array建议shape
2条回答

这对你有用吗?你知道吗

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

提供:

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

您可以将其转换为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.     ]])

相关问题 更多 >