NPZ.jl icon indicating copy to clipboard operation
NPZ.jl copied to clipboard

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

Open thgngu opened this issue 7 years ago • 4 comments

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.

thgngu avatar Jul 13 '18 16:07 thgngu

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.

fhs avatar Jul 13 '18 18:07 fhs

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)

SilvaEmerson avatar Aug 19 '19 22:08 SilvaEmerson

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

zsz00 avatar Oct 25 '19 07:10 zsz00

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

bjarthur avatar Feb 05 '20 22:02 bjarthur