我可以调用数组的索引吗?

时间:2018-02-22 22:12:56

标签: python arrays indexing cell

所以我有一个导入到python的图像。 imread命令基本上给我一个数组X,Y,Z,其中X和Y是像素的坐标,Z(有四个维度)给出了给定点(X,Y)的RGB值。

$ git checkout (1)~1 # Go back to the original state
$ git cherry-pick (2)  # (2') First apply bugfix, expecting no conflict
$ git cherry-pick (1) && git cherry-pick (3)
$ git reset --soft HEAD^ && git commit --amend -m "A new feature X"  # (5)
$
$ # origin -- (2') -- (5)

我的目标是分析RGB配置为[136,136,0,255]的数组中的确切点。这些点是黄绿色。我想将X和Y值添加到列表或数组中,以便我可以绘制它们。

为了实现这一点,我迭代数组的每个点X和Y(行和列),并分析Z值。我需要的是for循环中单元格的坐标(X,Y)。

基本上,如果图像的点(X,Y)中的颜色为黄色,请将该点(X,Y)添加到列表中。

令人惊讶的是,我认为在网上找不到任何东西,这是一个相对简单的事情。我意识到我可以使用以下内容进行交流: 因为我在范围len(X轴)这样的东西,但我想知道这是否可能。

3 个答案:

答案 0 :(得分:1)

不完全确定这是你正在寻找的,但我认为你想从循环中获取索引。这样做的主要方法是

  1. 使用索引循环,例如for i in range(0,255):然后索引到数组
  2. 使用enumerate进行迭代,它返回索引以及集合中的值
  3. 使用index方法
  4. 我认为最简单的选择是index方法。

    for row in CrpImg:
        for cell in row:
            print(np.nonzero)
            if (cell == [136,136,0,255]).all:
                print(CrpImg.index(row), row.index(cell))
    

    请注意,这将为您提供作物内的索引而不是完整图像。您可以调整(通过添加14和12),也可以迭代整个图像。

答案 1 :(得分:0)

如果您使用标准库中的enumerate,则可以访问包含计数和值的元组。默认情况下,计数从0开始

for row in CrpImg

变为

for num, row in enumerate(CrpImg):
    print(num)

答案 2 :(得分:0)

尝试使用numpy.where

indices = numpy.where(my_array == [136,136,0,255])