【发布时间】: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