numpy 查找数组的索引

cunj1qz1  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(144)

如果我有这样的数组

a = np.array([[False, False, False, False, False, False, False, False, False, False],[False, False, False, False, False, False, False, False, False, False],[False, False, False,  True,  True, False, False, False, False, False],

我试过np.random.choice,但它对一维数组不起作用:(

2j4z5cfb

2j4z5cfb1#

一种可能的解决方案是循环遍历不同的索引,直到找到匹配项
例如:

import random
index_0 = 0
index_1 = 0
found = False
while not found:
   temp_i0 = random.randint(len(array))
   temp_i1 = random.randint(len(array[0]))
   if array[temp_i0][temp_i1]:
      index_0 = temp_i0
      index_1 = temp_i1
      found = True
xxls0lw8

xxls0lw82#

您显示一个二维数组:

In [581]: a = np.array([[False, False, False, False, False, False, False, False, False, False],[False, False, False, False, False, False, False, False, False, False],[False, False, False,  True,  True, False, False, False, False, False],])

In [582]: a
Out[582]: 
array([[False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False, False, False, False, False, False, False,
        False],
       [False, False, False,  True,  True, False, False, False, False,
        False]])

In [583]: a.shape
Out[583]: (3, 10)

np.nonzero(或np.where)会找出True元素的索引:

In [584]: np.nonzero(a)
Out[584]: (array([2, 2], dtype=int64), array([3, 4], dtype=int64))

这是数组的元组,它可以用于索引,如下所示:

In [585]: a[_]
Out[585]: array([ True,  True])

阅读其文档

相关问题