Как бороться с различными типами np.array (list) в py2 и py3 при использовании pyhdf? - PullRequest
0 голосов
/ 22 октября 2018

Я хочу сохранить что-то как переменную в формате hdf от pyhdf.

Это мой код:

import numpy as np
from pyhdf.SD import *

var = 'PRESSURE_INDEPENDENT_SOURCE'
vartype = 4

hdf4 =  SD('./a.hdf', 2 | 4)

dset = hdf4.create(var, vartype, (1,13))
a = 'AFGL_1976'
b = np.array([list(a.ljust(13))])
dset[:] = b

Это работает в py2 и b.type равно |S1.

Но b.dtype - это <U1 в py3, и я получил эту ошибку при запуске последней строки моего кода:

TypeError: Cannot cast array data from dtype('<U1') to dtype('S1') according to the rule 'safe'

Если я добавлю b = b.astype('S1') в py3, то будет то же самоеошибка.Но b.dtype есть |S1.

1 Ответ

0 голосов
/ 23 октября 2018

попробуй:

b = np.array(list(a.ljust(13)),dtype='S1')
...