Julia代码中是否有类似于NumPy的where功能?

3
我阅读了"Julia中numpy where函数的等效方法是什么?"的答案,但我还没有看到答案(ifelse)如何给用户提供numpy.where的所有功能。 我在下面发布了示例代码:

    A = [0.0 0.9 0.0 0.99 0.0]
a = 1:length(A)
#-v- 如预期生成[0 1.0 0 1.0 0],但如何获取索引值? b = ifelse.(A .- 1.0 .> -1.0, 1.0, 0 ) #-^- 如何获取数组[0.9 0.99]? 如何从数组中删除所有零?

除使用for循环外,任何解决方法都将不胜感激。


2
为什么不用循环?循环速度快。 - Frames Catherine White
2
即使在NumPy中,使用“where”也没有意义。 NumPy支持逻辑索引,就像Julia一样。 - user2357112
1
numpy.where 真的支持你所要求的吗?从文档上看似乎不是这样。你能展示一个 numpy 的例子吗? - DNF
2个回答

10

我想你在寻找 np.where(cond) 的功能?那就是简单的使用findall(A .> 0)

要获得数组 [0.9, 0.99],我会使用逻辑索引A[A .> 0]


5

可以尝试避免分配掩码数组,这样会更快,因此使用filter(x -> x>0, A)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接