用python将元素的索引存储在数组中

用python将元素的索引存储在数组中,python,arrays,indexing,Python,Arrays,Indexing,我正在尝试在此数组中存储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的索引:

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'对象没有属性“index”

问题是如何在数组中存储元素的索引?我这样做是不对的吗?考虑到您想在
ind_0
ind_1
中保存0和1的索引,我们非常感谢您的帮助

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

用于范围内的i(len(arr)):
如果arr[i]==0:
ind_0.追加(i)
如果arr[i]==1:
ind_1.追加(i)

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

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

下面是使用枚举的另一种方法


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

请修复您的索引。看起来您正在使用numpy数组。这是你的意图吗?如果是,只需多考虑一下,尤其是变量
i
。。。当您检查时如何使用它,例如
arr[i]==0
?你不是已经把它用作索引了吗?那么为什么不将
i
附加到您的列表中呢?