Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No conversion path for dtype ('<U1') issue

I have a 2d list (Data_set) that contain a 3d array and a label(0 or 1), I want to make the h5py file with two datasets one for 3d array and the other for the label, this is my code for doing that: `

    data = []
    label = []
    for i in range(len(Data_set)):
        data.append(Data_set[i][0])# 3d array
        label.append(Data_set[i][1])#label
    data = np.array(data)
    label = np.array(label)
    dt = np.dtype('int16')
    with h5py.File(output_path+'dataset.h5', 'w') as hf:
        hf.create_dataset('data',dtype=dt ,data=data, compression='lzf')
        hf.create_dataset('label', dtype=dt, data=label, compression='lzf')

` the content of the 2d list is shown in the image below: enter image description here but when I run the code it gives me an error: see the image below enter image description here please help me to solve the problem?

like image 465
Hunar Avatar asked Jul 21 '26 19:07

Hunar


1 Answers

Your labels are not integers, they are strings, that's a problem for HDF5. Your error message relates to an array consisting of strings of length 1. See Strings in HDF5 for more details.

You can convert to integers before or after you construct your NumPy array, here are a couple of examples:

label = np.array(label).astype(int)
# or, label = np.array(list(map(int, label)))

Alternatively, since your values are 0 or 1, choosing bool may be more efficient:

label = np.array(label).astype(int).astype(bool)

Also, consider holding meta-data as attributes.

like image 60
jpp Avatar answered Jul 24 '26 08:07

jpp



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!