我有一个像这样的数组:
A = [[1,0,2,3],
[2,0,1,1],
[3,1,0,0]]
我想获取值为== 1的单元格之一的位置,例如A[0][0]
或A[1][2]
,依此类推...
到目前为止,我做到了:
A = np.array([[1,0,2,3],
[2,0,1,1],
[3,1,0,0]])
B = np.where(A == 1)
C = []
for i in range(len(B[0])):
Ca = [B[0][i], B[1][i]]
C.append(Ca)
D = random.choice(C)
但是现在我想重用D来获取单元格值。喜欢:
A[D]
(无效)应返回与A[1][2]
相同的结果
有人能解决这个问题,或者甚至知道更好的解决方案吗?
答案 0 :(得分:1)
这应该对您有用。
A = np.array([[1,0,2,3],
[2,0,1,1],
[3,1,0,0]])
B = np.where(A == 1)
C = []
for i in range(len(B[0])):
Ca = [B[0][i], B[1][i]]
C.append(Ca)
D = random.choice(C)
print(A[D[0]][D[1]])
这给出了输出。
>>> print(A[D[0]][D[1]])
1
由于D的值为[X,Y]
,因此可以从矩阵中以A[D[0]][D[1]]
的形式获得该值
答案 1 :(得分:0)
似乎您正在尝试随机选择A
为1的单元格之一。您可以一直使用numpy
,而不必求助于for循环
B = np.array(np.where(A == 1))
>>> B
array([[0, 1, 1, 2],
[0, 2, 3, 1]])
现在要随机选择与其中一个单元格相对应的列,我们可以使用np.random.randint
column = np.random.randint(B.shape[1])
D = B[:, column]
>>> D
array([1, 2]) # corresponds to the second index pair in B
现在,您可以使用A
的元组(对应于维度的索引)简单地索引到D
中
>>> A[tuple(D)]
1