【问题标题】:Create numpy array with another array and an indexing array使用另一个数组和索引数组创建 numpy 数组
【发布时间】:2017-11-09 23:42:23
【问题描述】:

我有一个形状为(m, n) 的数组y 和一个形状为(m, n, k) 的数组indices。假设我想做以下事情(在 Python 中):

x = np.ndarray(shape=(m,n,k))
for i in range(m):
    for j in range(n):
        for l in range(k):
            x[i,j,l] = y[indices[i,j,l],j]

有没有一种方法可以简单地使用 NumPy 而不需要使用 for 循环?

【问题讨论】:

  • 为什么不想使用 for 循环?您可以使用使用 for 循环的生成器,但如果这是您要寻找的,效率会更高。
  • 我只是想让自己更熟悉一下 NumPy。我当然可以使用 for 循环,我只是想知道是否有一种简单的方法可以使用我不知道的 NumPy 函数来编写它。

标签: python arrays numpy vectorization


【解决方案1】:

使用 NumPy 的 advanced-indexing 进行矢量化赋值 -

x = y[indices, np.arange(n)[:,None]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2021-05-07
    • 2020-06-11
    相关资源
    最近更新 更多