【问题标题】:store the index of an element in an array in python在python中将元素的索引存储在数组中
【发布时间】:2023-04-06 02:15:01
【问题描述】:

我试图在这个数组中存储 1 和 0 的索引:

arr = [1. 0. 0. 1. 1. 1. 0. 1. 1. 1. 0. 1. 0. 1. 1. 0. 1. 0. 1. 1. 1. 0. 1. 1.
 0. 1. 1. 1. 0. 0. 1. 1. 0. 1. 1. 1. 1. 0. 1. 1. 1. 1. 1. 0. 0. 1. 1. 1.
 1. 1. 1. 1. 0. 0. 1. 0. 1. 0. 1. 1. 0. 1. 0. 0. 0. 1. 1. 0. 0. 0. 1. 0.
 0. 1. 1. 0. 1. 1. 1. 1. 0. 1. 1. 1. 0. 1. 0. 1. 0. 1. 0. 1. 0. 1. 0. 1.
 0. 0. 0. 0. 1. 0. 0. 1. 0. 1. 1. 1. 1. 1. 0. 0. 0. 0. 1. 1. 1. 0. 0. 0.
 1. 1. 1. 0. 1. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 1. 0.]

这个 for 循环 ind_0 和 ind_1 是列表:

for i in range(len(arr)):
if arr[i]==0:
    ind_0.append(arr.index[i])

if arr[i]==1:
    ind_1.append(arr.index[i])

我收到一条错误消息,上面写着'numpy.ndarray' object has no attribute 'index'。 问题是如何将元素的索引存储在数组中?我做错了吗?任何帮助表示赞赏

【问题讨论】:

  • 请修正您的索引。看来您正在使用 numpy 数组。这是你的意图吗?如果是,就做ind_1 = np.argwhere(arr==1),ind_0 = np.argwhere(arr==0)
  • 想一想,尤其是变量i...检查时如何使用它,例如arr[i] == 0?你不是已经把它用作索引了吗?那么为什么不将i 附加到您的列表中呢?

标签: python arrays indexing


【解决方案1】:

考虑到您希望在ind_0ind_1 中保存0 和1 的索引

您不需要在此处使用任何索引,因为 i 已经是您检查 arr[i] 时的索引:

for i in range(len(arr)):
    if arr[i] == 0:
        ind_0.append(i)

    if arr[i] == 1:
        ind_1.append(i)

【讨论】:

    【解决方案2】:

    您的问题的一个问题是您没有讲完整个故事。还有一个步骤,将arr 从 Python 转换为 numpy 数组。事实证明,numpy 有一个函数可以直接返回所有非零元素的索引:

    ind_1 = arr.nonzero()
    ind_0 = (1-arr).nonzero()
    

    【讨论】:

      【解决方案3】:

      这是使用枚举的另一种方法。

      
      idx_0 = []
      idx_1 = []
      for i, v in enumerate(arr):
          if v == 1:
              idx_1.append(i)
              continue
          idx_0.append(i)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        • 2023-03-31
        • 2011-07-02
        • 2016-04-22
        • 2013-01-29
        • 2022-11-27
        相关资源
        最近更新 更多