如何转换 foll.从对象 dtype 到 float 的 numpy:
array(['4,364,541', '2,330,200', '2,107,648', '1,525,711', '1,485,231',
'1,257,500', '1,098,200', '1,065,106', '962,100', '920,200',
'124,204', '122,320', '119,742', '116,627', '115,900', '108,400',
'108,400', '108,000', '103,795', '102,900', '101,845', '100,900',
'100,626'], dtype=object)
我尝试了 arr.astype(float)
但由于每个字符串中的 ,
而无法正常工作。
最佳答案
另一种方式
np.frompyfunc(lambda x: x.replace(',',''),1,1)(arr).astype(float)
frompyfunc
返回一个对象 dtype 数组,这在这种情况下很好。我经常发现它比列表理解快 2 倍,但这里它的时间与 @coldspeed's
大致相同:
np.array([v.replace(',', '') for v in arr], dtype=np.float32)
这可能是因为我们从一个对象数据类型数组开始。对象 dtype 上的直接迭代比列表上的迭代慢一点,但比常规 numpy 数组上的迭代快。与列表一样,数组的元素是指向字符串的指针,不需要像字符串 dtype 数组那样进行“拆箱”。
(比 np.char
版本快 2 到 3 倍)。
关于python - 将 numpy 数组从对象 dtype 转换为 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51576008/