【发布时间】:2016-02-29 20:31:44
【问题描述】:
我想使用由 Julia 中的 PyCall 导入的 numpy.ma 创建一个屏蔽数组。
numpy.ma 模块中is_masked() 帮助下的 Python 示例。
>>> import numpy.ma as ma
>>> x = ma.masked_equal([0, 1, 0, 2, 3], 0)
>>> x
masked_array(data = [-- 1 -- 2 3],
mask = [ True False True False False],
fill_value=999999)
>>> ma.is_masked(x)
True
我尝试使用 PyCall 将其翻译成 Julia。
julia> using PyCall
julia> @pyimport numpy.ma as ma
julia> x = ma.masked_equal([0, 1, 0, 2, 3], 0);
julia> x
5-element Array{Int64,1}:
0
1
0
2
3
julia> ma.is_masked(x)
false
上面的代码不工作。它无法创建 Python 对象。它只是创建了一个普通的 Julia 数组。我尝试了其他方法,例如ma.array([1, 2, 3], mask=[0, 0, 1]),但仍然无法正常工作。
但是,从https://github.com/stevengj/PyCall.jl 中的示例来看,
julia> @pyimport Bio.Seq as s
julia> @pyimport Bio.Alphabet as a
julia> my_dna = s.Seq("AGTACACTGGT", a.generic_dna)
PyObject Seq('AGTACACTGGT', DNAAlphabet())
julia> my_dna[:find]("ACT")
5
在这种情况下,python对象可以直接创建,不费吹灰之力。
问题:我的翻译有什么问题?如何在 Julia 中创建一个 numpy 掩码数组?
【问题讨论】: