给定一个252×3阵列的多维数组{Float64,2},为什么我不能做像Python这样的事情:
normalized_data = vals / vals[1,:]
将每个元素除以其各自列中的第1个项目.这适用于Python(虽然vals[0,:]
在分母中).在朱莉娅,我不得不使用:
normalized_data = [(vals[:,1] / vals[1,1]) (vals[:,2] / vals[1,2]) (vals[:,3] / vals[1,3])]
这似乎是非常有限的,无论我有多少数据列,它都不是通用的!
它可以.
normalized_data = vals ./ vals[1,:]
甚至更好,如果normalized_data
已经分配:
normalized_data .= vals ./ vals[1,:]
(编辑:对于v0.5或更高版本,它需要vals ./ vals[1,:].'
归因于丢弃的尺寸.请参阅注释)
将免费分配.这种形式的矢量化语法部分源自MATLAB.我建议查看手册.如果您刚刚开始,一个地方是与其他语言的区别:
http://docs.julialang.org/en/release-0.4/manual/noteworthy-differences/
有关广播和了解我们通过.
明确获得的内容的更多信息,请参阅以下博客文章:
http://julialang.org/blog/2017/01/moredots
从本质上讲,因为它.
是明确的,解析器可以融合表达式并使其比执行"矢量化"计算la NumPy更有效(或者至少,它总是尽可能高效,而不是有时是有效的到期编译魔术).