查找与np.ravel一起使用的索引

时间:2015-06-11 14:52:48

标签: python matlab numpy indexing

我想使用np.ravel创建一个类似的返回结构,如下面的MATLAB代码所示:

[xi yi imv1] = find(squeeze(imagee(:,:,1))+0.1);
imv1 = imv1 - 0.1;
[xi yi imv2] = find(squeeze(imagee(:,:,2))+0.1);
imv2 = imv2 - 0.1;

其中imagee是对应于从imread()获得的图片的值的矩阵。 所以,(几乎)相应的Python翻译是:

imv1=np.ravel(imagee**[:,:,0]**,order='F')

粗体索引拼接明显与MATLAB不同。如何在Pythonic中指定索引值,以便我的返回值与MATLAB部分中的返回值相同?我相信这个MATLAB代码被写成“访问第三维指定数组中的所有行,列”。因此,如何在Python中指定第三个参数?

1 个答案:

答案 0 :(得分:3)

要检索索引,我通常使用np.where。这是一个例子:你有一个二维数组

a = np.asarray([[0,1,2],[3,4,5]])

并希望获取值高于阈值的索引,例如2.您可以使用条件为a> 2的np.where

idxX, idxY = np.where(a>2)

反过来你可以用来解决

print a[idxX, idxY]
>>> [3 4 5]

然而,indexing

可以达到同样的效果
print a[a>2]
>>> [3 4 5]

这适用于ravel'ed数组以及三维数组。但是,使用第一种方法使用3D数组需要预见更多的索引数组。