【发布时间】:2019-10-01 21:10:20
【问题描述】:
在 python 中,where 在 numpy 中根据给定条件选择数组中的元素。
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.where(a < 5, a, 10*a)
array([ 0, 1, 2, 3, 4, 50, 60, 70, 80, 90])
在 Julia 中呢? filter 将用作选择元素,但如果未使用 if 表达式,它将删除其他元素。但是,我不想使用if。
我是否需要为filter(没有if)或任何其他替代方案编写更复杂的函数?
编辑:我找到了解决方案,但如果有人对此有更好的想法,请回答这个问题。
julia > a = collect(1:10)
10-element Array{Int64,1}:
1
2
3
4
5
6
7
8
9
10
julia> cond = a .< 5
10-element BitArray{1}:
true
true
true
true
false
false
false
false
false
false
julia> Int.(cond) .* a + Int.(.!cond) .* (10 .* a)
10-element Array{Int64,1}:
1
2
3
4
50
60
70
80
90
100
【问题讨论】:
标签: julia