我有一个很大的np.ndarray (3600000,3)
,HUE
,VALUE
和一个相关的CLASS
号码。对于每对HUE
和VALUE
,我希望使用此数组找到相应的Class
数字。我是Python的初学者,很难做到这一点。你知道办法吗?
提前谢谢!
答案 0 :(得分:20)
我假设你的数组看起来像:
|(HUE)(VALUE)(CLASS)
row/col| 0 1 2
-------+-----------------
0 | 0 1 2
1 | 3 4 5
2 | 6 7 8
. | . . .
. | . . .
3599999| . . .
以下是示例代码。为简单起见,我将大小3600000更改为5。
a = np.array(xrange(5 * 3))
a.shape = (5, 3)
现在数组a
如下所示:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14]])
如果您想要HUE=9
行,请执行以下操作:
a[np.where(a[:,0] == 9)]
#array([[ 9, 10, 11]])
如果您想要VALUE=4
行,请执行以下操作:
a[np.where(a[:,1] == 4)]
#array([[3, 4, 5]])
如果您想要HUE=0
和VALUE=1
行,请执行以下操作:
a[np.where((a[:,0] == 0) * (a[:,1] == 1))]
#array([[0, 1, 2]])
答案 1 :(得分:2)
试试这段代码:
x[x[:, 2] == class_number[:, :2]
其中x
为np.ndarray
x[:, 2] == class_number
包含true/false
,表示最后一个是class_number
。
您需要查看http://wiki.scipy.org/Cookbook/Indexing
中的Boolean indexing
从评论中移出。