我有一个大的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个这样的数组,所以我已经为每个数组使用了多重处理。
正在寻找建议。
答案 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. ]])