【问题标题】:How to get a 2D NumPy array with value 1 at indices represented by values in 1D NumPy array (Python)如何在由 1D NumPy 数组(Python)中的值表示的索引处获取值为 1 的 2D NumPy 数组
【发布时间】:2021-11-18 11:32:12
【问题描述】:

如何在 Python 中的 1D np.array 中的值表示的索引处获取值为 1 的 2D np.array。

示例:

[1, 2, 5, 1, 2]

应该转换成

[[0, 1, 0, 0, 0, 0],
 [0, 0, 1, 0, 0, 0],
 [0, 0, 0, 0, 0, 1],
 [0, 1, 0, 0, 0, 0],
 [0, 0, 1, 0, 0, 0]]

这里你已经预先知道了新数组的宽度(shape[2])值。

我可以手动完成,但有什么方法可以直接使用 NumPy 方法来加快执行速度?我的数组的维度非常大,我必须对所有迭代都这样做。因此,每次迭代都需要手动执行此操作。

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    您可以使用np.zeros 创建一个带零的数组。数组的形状应该是(len(1D array), max(1D array)+1)。然后使用 NumPy 的索引。

    idx = [1, 2, 5, 1, 2]
    shape = (len(idx), max(idx)+1)
    out = np.zeros(shape)
    out[np.arange(len(idx)), idx] = 1
    print(out)
    [[0. 1. 0. 0. 0. 0.]
     [0. 0. 1. 0. 0. 0.]
     [0. 0. 0. 0. 0. 1.]
     [0. 1. 0. 0. 0. 0.]
     [0. 0. 1. 0. 0. 0.]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-07
      • 2020-03-18
      • 2021-10-12
      • 2021-08-21
      • 1970-01-01
      • 2022-01-15
      • 2013-08-28
      • 1970-01-01
      相关资源
      最近更新 更多