【问题标题】:How to get each element of numpy array?如何获取numpy数组的每个元素?
【发布时间】:2016-11-22 21:19:04
【问题描述】:

我有一个如下的 numpy 数组:

将存储一些值的键。例如 键 [2,3,4,7,8]

如何获取 4 的索引并将索引存储在 int 变量中?

比如4的索引值是2,那么2会存储在一个int变量中。

我已尝试使用以下代码段

//enter code here

for i in np.nditer(Keys):
      print(keys[i]);

//enter code here

我正在使用 python 3.5 蜘蛛3.5.2 蟒蛇4.2.0

【问题讨论】:

  • 不要使用nditer;这是为了高级目的。

标签: python numpy anaconda


【解决方案1】:

keys 是列表还是 numpy 数组

 keys = [[2,3,4,7,8]   # or
 keys = np.array([2,3,4,7,8])

您无需迭代即可查看其中任何一个的元素。但是你可以做

 for i in keys:
     print(i)
 for i in range(len(keys)):
     print(keys[i])
 [i for i in keys]

这些都适用。

如果你想要值4的索引,列表有一个方法:

 keys.index(4)

对于数组

 np.where(keys==4)

是一段有用的代码。还有

 np.in1d(keys, 4)
 np.where(np.in1d(keys, 4))

忘记np.nditer。这是针对高级编程,而不是常规迭代。

【讨论】:

    【解决方案2】:

    有几种方法。如果列表不是太大,那么:

    where_is_4 = [e for i,e in enumerate(Keys) if i==4][0]
    

    它的作用是使用枚举器循环遍历列表,并在每次出现值“4”时创建一个包含枚举器值的列表。

    【讨论】:

    • 如果keys是一个numpy数组,你会怎么做?
    【解决方案3】:

    为什么不直接做:

    for i in range( len( Key ) ):
        if ( Key[ i ] == 4 ):
          print( i )
    

    【讨论】:

      【解决方案4】:

      您可以使用以下方法找到值为4 的所有索引:

      >>> keys = np.array([2,3,4,7,8])
      >>> np.flatnonzero(keys == 4)
      array([2])
      

      【讨论】:

        【解决方案5】:

        对此有一个原生 numpy 方法,称为 where

        它将返回一个索引数组,其中某些给定条件为真。因此,如果列表不为空,您可以选择第一个条目:

        N = 4
        indicies = np.where(x==N)[0]
        index = None
        if indicies:
            index = indicies[0]
        

        【讨论】:

          【解决方案6】:

          在这里使用numpy.where(condition) 将是一个不错的选择。从下面的代码你可以得到 4 的位置。

          import numpy as np
          keys = np.array([2,3,4,7,8])
          result = np.where(keys==4)
          result[0][0]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-02-07
            • 2021-09-08
            • 2011-07-08
            • 1970-01-01
            • 2016-11-19
            • 1970-01-01
            相关资源
            最近更新 更多