首页 > 解决方案 > 将 Julia ifelse 与数组一起使用

问题描述

我正在使用 Julia 1.0.3,并且正在尝试运行用 Julia 0.7 编写的一行代码。此行沿布尔值数组运行基本 ifelse 函数。似乎在这个版本的 Julia 中,ifelse 函数不能再针对位数组运行。有没有办法让 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

解决方案


只需在广播.后加一个点。ifelse许多对集合元素进行操作的函数需要在 Julia 1.x 上使用点语法进行广播。

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

推荐阅读