我有以下问题,我想使用numpy数组元素来解决。问题是:
矩阵=np.零((4*4(,dtype=bool(,它给出了这个2D矩阵。
Matrix = [[False, False, False, False],
[False, False, False, False],
[False, False, False, False],
[False, False, False, False]]
让我们假设我们有另一个数组a=np.array([0,1],[2,1],[3,3](
a = [[0, 1],
[2, 1],
[3, 3]]
我的问题是:如何使用数组的元素作为索引来用True填充矩阵。输出应该看起来像这个
Matrix = [[False, True, False, False], # [0, 1]
[False, False, False, False],
[False, True, False, False], # [2, 1]
[False, False, False, True]] # [3, 3]
import numpy as np
Matrix = np.zeros((4*4), dtype = bool).reshape(4,4)
a = [[0, 1],
[2, 1],
[3, 3]]
将它们展开为一对合适的索引阵列,用于二维阵列
a = ([x[0] for x in a], [x[1] for x in a])
Matrix[a] = True
>>> Matrix
array([[False, True, False, False],
[False, False, False, False],
[False, True, False, False],
[False, False, False, True]])
制作(4,4(布尔数组的简单方法:
In [390]: arr = np.zeros((4,4), dtype = bool)
In [391]: arr
Out[391]:
array([[False, False, False, False],
[False, False, False, False],
[False, False, False, False],
[False, False, False, False]])
制作a
:的正确语法
In [392]: a = np.array([[0,1], [2,1], [3,3]])
In [393]: a
Out[393]:
array([[0, 1],
[2, 1],
[3, 3]])
使用a
的2列作为arr
:的2个维度的索引
In [394]: arr[a[:,0],a[:,1]]=True
In [395]: arr
Out[395]:
array([[False, True, False, False],
[False, False, False, False],
[False, True, False, False],
[False, False, False, True]])