Skip to main content
 首页 » 编程设计

一次对整个 numpy 数组进行 python 类型转换

2025年05月04日23cyq1162

我有一个 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 ?

字符串和其他数据类型的相同问题。

请您参考如下方法:

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'>