【问题标题】:How can I use numpy array elements as indices to assign values for another numpy array如何使用 numpy 数组元素作为索引来为另一个 numpy 数组赋值
【发布时间】:2022-01-14 03:57:10
【问题描述】:

我有以下问题,我想使用 numpy 数组元素来解决。 问题是:

Matrix = np.zeros((4*4), dtype = bool) 给出了这个二维矩阵。

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]]      

我的问题是:如何使用 a 数组的元素作为索引来用 True 填充我的矩阵。输出应该是这样的

Matrix = [[False, True,  False, False], # [0, 1]
          [False, False, False, False],
          [False, True,  False, False], # [2, 1]
          [False, False, False, True]]  # [3, 3]

【问题讨论】:

  • Matrix = np.zeros((4,4), dtype = bool) 将给出一个二维矩阵,目前您的代码将给出一维数组
  • a = np.array([[0,1], [2,1], [3,3]]) 将给出一个二维数组
  • CJR提供的答案让我想做的事。谢谢

标签: python numpy


【解决方案1】:
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]])

【讨论】:

  • 成功了。感谢您的帮助(y)
【解决方案2】:

制作 (4,4) bool 数组的简单方法:

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]])

【讨论】:

  • 这也很好用。感谢您的回复:D
猜你喜欢
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 2014-01-15
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多