Python 如何按列值切片Numpy数组
我有一个像numpy数组这样的数组Python 如何按列值切片Numpy数组,python,numpy,Python,Numpy,我有一个像numpy数组这样的数组 dd =[[0.567 2 0.611] [0.469 1 0.479] [0.220 2 0.269] [0.480 1 0.508] [0.324 1 0.324]] 我需要2个独立的数组dd[:,1]==1和dd[:,1]==2 以下是我的目标: na =[[0.469 1 0.479] [0.480 1 0.508] [0.324 1 0.324]] na2 =[[0.5
dd =[[0.567 2 0.611]
[0.469 1 0.479]
[0.220 2 0.269]
[0.480 1 0.508]
[0.324 1 0.324]]
我需要2个独立的数组dd[:,1]==1
和dd[:,1]==2
以下是我的目标:
na =[[0.469 1 0.479]
[0.480 1 0.508]
[0.324 1 0.324]]
na2 =[[0.567 2 0.611]
[0.220 2 0.269]]
我已经尝试了
np。在哪里
确实有效您可以使用numpy花式索引:
[~/repo/py]
|32>dd[dd[:,1] == 1]
[32]
array([[ 0.469, 1. , 0.479],
[ 0.48 , 1. , 0.508],
[ 0.324, 1. , 0.324]])
[~/repo/py]
|33>dd[dd[:,1] == 2]
[33]
array([[ 0.567, 2. , 0.611],
[ 0.22 , 2. , 0.269]])
或者,您可以使用列表:
[~/repo/py]
|21>np.array([row for row in dd if row[1] == 1])
[21]
array([[ 0.469, 1. , 0.479],
[ 0.48 , 1. , 0.508],
[ 0.324, 1. , 0.324]])
[~/repo/py]
|22>np.array([row for row in dd if row[1] == 2])
[22]
array([[ 0.567, 2. , 0.611],
[ 0.22 , 2. , 0.269]])
编辑:
如何在ipython中计算这些时间:
[~/repo/py]
|36>timeit dd[dd[:,1] == 1]
100000 loops, best of 3: 6 us per loop
[~/repo/py]
|37>timeit np.array([row for row in dd if row[1] == 1])
100000 loops, best of 3: 11.5 us per loop
第一个例子(花式索引)的速度大约是前者的两倍。