Julia从元组中为数组中的每一行选择元素

时间:2014-03-12 04:52:24

标签: arrays indexing tuples julia

我知道在朱莉娅必须有一个聪明的方法来做这件事,但我很难过。我有一个元组的1d数组,我想从数组的每一行中提取第三个元素。以下是我与之合作的一个例子:

julia> experArr 20-element Array{(Any,Any,Any),1}:
 (4000,0.97613,1.6e6) 
 (2000,0.97613,800000.0)
 (8000,0.97613,3.2e6) 
 (1000,0.97613,400000.0)
 ...

我的第一个想法是做这样的事情:

julia> experArr[:][3]

但返回以下内容:

julia> experArr[:][3] 
(8000,0.97613,3.2e6)

我希望它返回的是:

20-element Array{Any,1}:
1.6e6
800000.0
3.2e6
400000.0
...

我已尝试过其他几种索引排列,但我只保留返回单个元素。我觉得有一种正确的方法可以做到这一点,而我只是缺席

2 个答案:

答案 0 :(得分:1)

experArray[:]只是原始数组的副本,因此实际上是无操作。最简单的方法是理解:

[ x[3] for x in experArr ]

您也可以使用map

map(x->x[3], experArr)

目前,理解版本可能更快,并且具有更好的类型行为。

答案 1 :(得分:0)

与Stefan的答案基本相同,但更为简洁一些,您可以在数组上广播getfield

getfield.(experArr, 3)