我有一个具有不同数据类型的元素列表。我需要将所有的numpy.int64 numpy.float64
转换为int
或float
。
有没有比这更简单/更紧凑的方法:
import numpy as np
import datetime
a = [np.float64(1.2), np.int64(123), 'blablabla', datetime.datetime.now()]
#[1.2, 123, 'blablabla', datetime.datetime(2020, 10, 24, 19, 16, 2, 37112)]
a = [float(v) if isinstance(v,np.float64) else v for v in a]
a = [int(v) if isinstance(v,np.int64) else v for v in a]
NumPy.item((而不是NumPy元素,它将给出近似的python本地类型
a =[val.item() if type(val).__module__ == np.__name__ else val for val in a ]
for val in native:
print(type(val))
numpyNum = np.float(1.2)
pythonNum = num.item()
pythonNativeTypeValues = [ v.item() for v in a]
当你的列表中有多个类型时,你需要检查元素类型是否为NumPy,因此代码将如下所示
import numpy as np
import datetime
a = [np.float64(1.2), np.int64(123), 'blablabla', datetime.datetime.now()]
native = []
for val in a:
if type(val).__module__ == np.__name__:
val =val.item()
native.append(val)
for val in native:
print(type(val))
#<class 'float'>
#<class 'int'>
#<class 'str'>
#<class 'datetime.datetime'>
如果你计划使用列表压缩,代码将是一行,那就是
native =[val.item() if type(val).__module__ == np.__name__ else val for val in a ]