fhs / NPZ.jl

A Julia package that provides support for reading and writing Numpy .npy and .npz files
Other
117 stars 16 forks source link

Error while reading .npy file: parsing header failed: unsupported type O #20

Open thgngu opened 5 years ago

thgngu commented 5 years ago

I'm using julia 0.6.1, installed NPZ by Pkg.add("NPZ")

I have a .npy file that created by numpy 1.14.3 on Ubuntu 16.04, Conda 4.4.10.

I get the following error trying to read it in

parsing header failed: unsupported type O

Stacktrace:
 [1] parsedtype(::String) at /opt/anaconda3/share/julia/site/v0.6/NPZ/src/NPZ.jl:135
 [2] parseheader(::String) at /opt/anaconda3/share/julia/site/v0.6/NPZ/src/NPZ.jl:157
 [3] npzreadarray(::IOStream) at /opt/anaconda3/share/julia/site/v0.6/NPZ/src/NPZ.jl:191
 [4] npzread(::String) at /opt/anaconda3/share/julia/site/v0.6/NPZ/src/NPZ.jl:218

Here is my file if you have time to take a look at. It's just a regular 1D, np.float64 array.

fhs commented 5 years ago

I think you have the wrong file? That file indeed contains a float64 (<f8) array, which I can load just fine in NPZ. However, you're getting an error about type O, which is the python object type.

Adding support for importing python objects inside julia is not an easy task.

SilvaEmerson commented 4 years ago

I had the same problem and a get around that by using PyCall, like this:

using PyCall

np = pyimport("numpy")

data = np.load("data.npy", allow_pickle=true)
zsz00 commented 4 years ago

me too, I had the same problem and a get around that by using PyCall. npy save a Object type data, load use this allow_pickle=true, is OK. but NPZ.npzread() is unsupported type O

bjarthur commented 4 years ago

with the PyCall solution above, you then access the variables within an npz file using get(data, :my_variable_name)