use*_*444 16 python numpy multidimensional-array
我有一个很大np.ndarray (3600000,3)的HUE,一个VALUE和一个相关的CLASS数字.对于每对HUE和VALUE我想找到的,使用这个数组相应的Class数字.我是Python的初学者,并且很难做到这一点.你知道办法吗?
先感谢您!
Kei*_*awa 27
我假设你的数组看起来像:
|(HUE)(VALUE)(CLASS)
row/col| 0 1 2
-------+-----------------
0 | 0 1 2
1 | 3 4 5
2 | 6 7 8
. | . . .
. | . . .
3599999| . . .
Run Code Online (Sandbox Code Playgroud)
这是示例代码.为简单起见,我将尺寸3600000更改为5.
a = np.array(xrange(5 * 3))
a.shape = (5, 3)
Run Code Online (Sandbox Code Playgroud)
现在数组a看起来像这样:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
Run Code Online (Sandbox Code Playgroud)
如果你想要行HUE=9,请执行以下操作:
a[np.where(a[:,0] == 9)]
#array([[ 9, 10, 11]])
Run Code Online (Sandbox Code Playgroud)
如果你想要行VALUE=4,请执行以下操作:
a[np.where(a[:,1] == 4)]
#array([[3, 4, 5]])
Run Code Online (Sandbox Code Playgroud)
如果你想用HUE=0和行VALUE=1,请执行以下操作:
a[np.where((a[:,0] == 0) * (a[:,1] == 1))]
#array([[0, 1, 2]])
Run Code Online (Sandbox Code Playgroud)
试试这个代码:
x[x[:, 2] == class_number[:, :2]
Run Code Online (Sandbox Code Playgroud)
哪里xnp.ndarray
x[:, 2] == class_number
Run Code Online (Sandbox Code Playgroud)
containstrue/false表示最后一个class_number是否存在。
你需要看看:Boolean indexing在http://wiki.scipy.org/Cookbook/Indexing
从评论移过来。