Type conversion of `masked_array` in `numpy.ma`
- Ngôn ngữ chính
- Julia
- Star
- 1.5k
- Fork
- 186
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
Also described in my question in StackOverflow: [How to create a masked array using numpy.ma imported by PyCall in Julia](http://stackoverflow.com/questions/35709042/how-to-create-a-masked-array-using-numpy-ma-imported-by-pycall-in-julia/35710432#35710432)
I was trying to create a `masked_array` Python object with `numpy.ma`.
``` julia
using PyCall
@pyimport numpy.ma as ma
x = ma.masked_equal([0, 1, 0, 2, 3], 0)
ma.is_masked(x)
```
The output, however, is just a Julia array.
```julia
julia> x = ma.masked_equal([0, 1, 0, 2, 3], 0)
5-element Array{Int64,1}:
0
1
0
2
3
julia> ma.is_masked(x)
false
```
The correct output can be obtained by using `pycall()` (thank Matt B. for pointing it out in my stackoverflow question):
```julia
julia> x = pycall(ma.masked_equal, Any, [0,1,0,2,3], 0)
PyObject masked_array(data = [-- 1 -- 2 3],
mask = [ True False True False False],
fill_value = 0)
julia> ma.is_masked(x)
true
```
It happens because PyCall considers the `masked_array` as just a usual array.
```julia
julia> pytype_query(x)
Array{Int64,N}
```
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Tái hiện ví dụ với @pyimport numpy.ma, masked_equal, pycall và pytype_query, sau đó theo dõi cách PyCall phân loại masked_array được trả về. Issue không nêu file hoặc test nào; được coi là hoàn thành khi masked_equal giữ nguyên đối tượng masked-array để ma.is_masked(x) trả về true mà không cần Any workaround.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- julia, numpy, python
- Lĩnh vực
- developer-experience
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100