将Julia ifelse与数组一起使用

将Julia ifelse与数组一起使用,julia,Julia,我使用的是Julia 1.0.3,我试图运行一行用Julia 0.7编写的代码。此行沿布尔值数组运行基本ifelse函数。在这个版本的Julia中,ifelse函数似乎不能再针对位数组运行。有没有办法让其他人在这里工作 x = collect(0:0.1:2) x2 = ifelse(2 .- 2*x.>=0, 2 .- 2*x, 0) 我希望得到一个数组,对于x>=0和0的所有值显示2-2x,否则为0。我得到以下错误 TypeError: non-boolean (BitArray{

我使用的是Julia 1.0.3,我试图运行一行用Julia 0.7编写的代码。此行沿布尔值数组运行基本ifelse函数。在这个版本的Julia中,ifelse函数似乎不能再针对位数组运行。有没有办法让其他人在这里工作

x = collect(0:0.1:2) 
x2 = ifelse(2 .- 2*x.>=0, 2 .- 2*x, 0)
我希望得到一个数组,对于x>=0和0的所有值显示2-2x,否则为0。我得到以下错误

TypeError: non-boolean (BitArray{1}) used in boolean context

Stacktrace:
 [1] top-level scope at In[67]:1
只要画一个点。之后,我要广播。在集合元素上运行的许多函数需要在Julia 1.x上使用点语法进行广播

x = collect(0:0.1:2) 
x2 = ifelse.(2 .- 2*x.>=0, 2 .- 2*x, 0.)
只要画一个点。之后,我要广播。在集合元素上运行的许多函数需要在Julia 1.x上使用点语法进行广播

x = collect(0:0.1:2) 
x2 = ifelse.(2 .- 2*x.>=0, 2 .- 2*x, 0.)

除了其他人提到的以外,您的代码还存在类型不稳定性问题。使用@code\u warntype来验证这一点。x具有Float64类型的元素,而在ifelse中,一个分支的类型为Float64,另一个分支的类型为Int64。这可以通过使用zeroeltypex而不是0来解决


不要使用这个奇怪的条件2-2*x>=0,而是使用这个等价的简单条件x除了其他人提到的以外,您的代码还存在类型不稳定性问题。使用@code\u warntype来验证这一点。x具有Float64类型的元素,而在ifelse中,一个分支的类型为Float64,另一个分支的类型为Int64。这可以通过使用zeroeltypex而不是0来解决


不要使用这个奇怪的条件2-2*x>=0,而是使用这个等价的简单条件x。这段代码很可能是在Julia 0.5或更早版本中编写的—它在Julia 0.6中被弃用。如果您在那里运行它,Julia会很高兴地给您一个不推荐的警告:警告:ifelsec::AbstractArray{Bool},x::AbstractArray,y不推荐使用,请改用ifelse.c,x,y。在更新代码时,仔细查看每个版本并在运行时修复弃用警告是非常有帮助的。顺便说一句,没有理由使用collect。直接使用0:0.1:2的范围。这段代码很可能是在Julia0.5或更早版本中编写的-在Julia0.6中不推荐使用。如果您在那里运行它,Julia会很高兴地给您一个不推荐的警告:警告:ifelsec::AbstractArray{Bool},x::AbstractArray,y不推荐使用,请改用ifelse.c,x,y。在更新代码时,仔细查看每个版本并在运行时修复弃用警告是非常有帮助的。顺便说一句,没有理由使用collect。直接使用0:0.1:2的范围即可。