我有一个numpy列表,其元素的类型是numpy.float64,我想将列表的所有元素转换为float。
这是打印出来的列表:
[array([ -7.19244777e+24, 3.32768299e-02, -7.19249216e+24], dtype=float32),
array([ -8.87044985e+25, 1.46775544e-01, -8.87068228e+25], dtype=float32),
array([ 0.61927807, -0.16575921, 0.98002648], dtype=float32),
array([ 0.63426137, -0.15838303, 0.97730571], dtype=float32)]
我可以使用以下代码将每个元素从numpy.float转换为float。
mtx = []
for i in range(len(centroids)):
row = []
for j in range(len(centroids[i])):
row.append(np.asscalar(centroids[i][j]))
mtx.append(row)
我想知道是否有任何单行或实用工具方法将整个列表的元素从numpy.float64转换为float?
字符串和其他数据类型的相同问题。
答案 0 :(得分:5)
np.ndarray.tolist()
完全符合您的要求。
>>> a = np.identity(3, np.float64)
>>> a
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> a.dtype
dtype('float64')
>>> b = a.tolist()
>>> type(b[0][0])
<class 'float'>
应用于您的阵列列表:
>>> array = np.array
>>> float32 = np.float32
>>> loa = [array([ -7.19244777e+24, 3.32768299e-02, -7.19249216e+24], dtype=float32),
... array([ -8.87044985e+25, 1.46775544e-01, -8.87068228e+25], dtype=float32),
... array([ 0.61927807, -0.16575921, 0.98002648], dtype=float32),
... array([ 0.63426137, -0.15838303, 0.97730571], dtype=float32)]
>>>
>>> lol = [a.tolist() for a in loa]
>>> lol
[[-7.192447772100603e+24, 0.03327682986855507, -7.19249215957853e+24], [-8.870449851573768e+25, 0.14677554368972778, -8.870682280549097e+25], [0.619278073310852, -0.16575920581817627, 0.9800264835357666], [0.6342613697052002, -0.15838302671909332, 0.9773057103157043]]
>>> type(lol[0][0])
<class 'float'>