使用julia的数组或条件评估集

时间:2016-03-08 10:44:18

标签: python arrays if-statement julia

我是朱莉娅的新人。如果有可能在一行中用if语句写入数组或Julia中的一组,我就会徘徊。

例如在python中我可以编写一个列表,例如

s = [1 if np.random.uniform() < 0.5 else 0 for i in range(10)]

在朱莉娅,如果我是对的,应该是这样的数组

s = []
for i in 0:10
  if rand()<0.5
    push!(s, 1)
  else
    push!(s, 0)
  end
end 

我知道我可以在一行中写for个周期,即

s =[1 for i in 1:10]

但是if..else声明呢?

4 个答案:

答案 0 :(得分:3)

正如@Guido建议的那样,你可以像python一样使用列表理解,更具体地说:

s = [if rand() < 0.5 1 else 0 end for i in 1:10]

请注意,julia的if-else语句需要end。我认为这与使用map

相同
map(x -> rand() < 0.5 ? 1 : 0, 1:10)

答案 1 :(得分:2)

具体来说,

s = [1 if np.random.uniform() < 0.5 else 0 for i in range(10)]

在朱莉娅,你可以写,

 s = [rand()<0.5?1:0 for i=1:10]

答案 2 :(得分:1)

这称为列表理解。在朱莉娅,这可以使用:

完成

> [(x,y) for x=1:2, y=3:4] 2x2 Array{(Int64,Int64),2}: (1,3) (1,4) (2,3) (2,4)

有关详细信息,请参阅Nested list comprehensions in Julia

答案 3 :(得分:0)

在Julia中惯用或更快:

convert(Vector{Int},rand(Bool,10))

1*rand(Bool,10)

1*(rand(10).<0.5)

ifelse(rand(Bool,10),0,1)   // ifelse is a function and avoid CPU branching

我的直觉是第一版和最后一版是最快的。