在 Python (Numpy) 中,有一个 np.choose 函数,它从索引数组和可供选择的数组列表构造一个数组。
简单的例子(实际上我最感兴趣的是这个简单版本的一维选择数组问题):
import numpy as np
idx_arr = np.array([0, 1, 2, 1, 3])
choices = np.array([0, 10, 20, 30])
new_arr = np.choose(idx_arr, choices) # array([ 0, 10, 20, 10, 30])
对于上面的示例,可以使用列表理解在 Julia 中使用 for 循环创建相同的结果
idx_arr = [1, 2, 3, 2, 4];
choices = [0, 10, 20, 30];
new_arr = [choices[idx_arr[i]] for i in 1:length(idx_arr)];
是否有 Julia 相当于
np.choose
或任何其他不需要循环索引数组来实现此目的的方法?
choices[idx_arr]
可以工作(请注意,索引是从 1 开始的,而不是从 0 开始的)。
问题中的例子:
julia> idx_arr = [1, 2, 3, 2, 4];
julia> choices = [0, 10, 20, 30];
julia> new_arr = [choices[idx_arr[i]] for i in 1:length(idx_arr)]
5-element Vector{Int64}:
0
10
20
10
30
julia> choices[idx_arr]
5-element Vector{Int64}:
0
10
20
10
30