使用pyhdf时如何处理py2和py3中不同类型的np.array(list)?
How to deal with the different type of np.array(list) in py2 and py3 when using pyhdf?
我想通过 pyhdf 在 hdf 中保存一些变量。
这是我的代码:
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
在 py3 中是 <U1
,当 运行 我的代码的最后一行时出现此错误:
TypeError: Cannot cast array data from dtype('<U1') to dtype('S1') according to the rule 'safe'
如果我在py3中添加b = b.astype('S1')
,也会出现同样的错误。但是,b.dtype
是 |S1
。
尝试:
b = np.array(list(a.ljust(13)),dtype='S1')
我想通过 pyhdf 在 hdf 中保存一些变量。
这是我的代码:
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
在 py3 中是 <U1
,当 运行 我的代码的最后一行时出现此错误:
TypeError: Cannot cast array data from dtype('<U1') to dtype('S1') according to the rule 'safe'
如果我在py3中添加b = b.astype('S1')
,也会出现同样的错误。但是,b.dtype
是 |S1
。
尝试:
b = np.array(list(a.ljust(13)),dtype='S1')