繁体   English   中英

更快速地修改numpy数组

[英]Faster way to modify a numpy array

我有一个大的numpy数组有400万行和4列(形状=(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个这样的数组,所以我已经在为每个数组使用多处理。

寻找建议。

这对你有用吗?

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.     ]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM