[英]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.