【问题标题】:Numpy apply functions to selected indices of matrixNumpy将函数应用于矩阵的选定索引
【发布时间】:2017-05-15 13:01:20
【问题描述】:

我有两个随机索引生成器,从 0 到 3

idx_1 = np.random.choice(4, 2, replace=False)
idx_2 = np.setdiff1d(range(4), idx_1)

我有一个 3D numpy 数组 example_array,它由 4 个矩阵和 2 个函数组成,比如 func1 和 func2。

我想做类似的事情

example_array[idx1[0]] = func1(example_array[idx1[0]])
example_array[idx1[1]] = func1(example_array[idx1[1]])
example_array[idx2[0]] = func2(example_array[idx2[0]])
example_array[idx2[1]] = func2(example_array[idx1[0]])

什么是快速的方法,而不像上面那样明确地写出来?

【问题讨论】:

  • 你的函数的输出是什么?标量还是其他矩阵?
  • 输出是矩阵。
  • example_array[idx1] 生成一个新数组,其第一维大小为idx_。如果您的 func1 可以使用 3d 数组,那么问题就很简单了。如果它被限制为 2d,那么您必须在第一个维度上进行某种迭代,就像您所做的那样明确或使用 for i in range(): 循环。

标签: python arrays function numpy


【解决方案1】:

如何矢量化 func1()func2() 以便您可以这样做

example_array[idx1] = func1(example_array[idx1])
example_array[idx2] = func2(example_array[idx2])

【讨论】:

  • 不幸的是,它在后面的代码中对我不起作用。
  • 如果你展示一下,也许我们可以优化功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2017-06-07
  • 2019-04-20
相关资源
最近更新 更多