我知道在朱莉娅必须有一个聪明的方法来做这件事,但我很难过。我有一个元组的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
...
我已尝试过其他几种索引排列,但我只保留返回单个元素。我觉得有一种正确的方法可以做到这一点,而我只是缺席
答案 0 :(得分:1)
experArray[:]
只是原始数组的副本,因此实际上是无操作。最简单的方法是理解:
[ x[3] for x in experArr ]
您也可以使用map
:
map(x->x[3], experArr)
目前,理解版本可能更快,并且具有更好的类型行为。
答案 1 :(得分:0)
与Stefan的答案基本相同,但更为简洁一些,您可以在数组上广播getfield
:
getfield.(experArr, 3)