Python如何将['0.12''0.23'] <class'numpy.ndarray'=“”>转换为普通的numpy数组

时间:2018-12-20 15:20:36

标签: python numpy type-conversion

我正在使用从我的csv文件中获取值的软件包。如果我打印出结果,则会得到['0.12' '0.23']。我检查了类型,即<class 'numpy.ndarray'>,我想将其转换为类似[0.12, 0.23]的numpy数组。 我尝试了np.asarray(variabel),但未能解决问题。

2 个答案:

答案 0 :(得分:0)

解决方案

import numpy as np
array = array.astype(np.float)


# If you are just initializing array you can do this
ar= np.array(your_list,dtype=np.float)

答案 1 :(得分:0)

了解如何读取csv可能会有所帮助。但是出于某种原因,它似乎创建了一个带有字符串numpy的{​​{1}}数组:

dtype

这种数组的In [106]: data = np.array(['0.12', '0.23']) In [107]: data Out[107]: array(['0.12', '0.23'], dtype='<U4') In [108]: print(data) ['0.12' '0.23'] 格式省略了逗号,str的显示保留了它。

等效列表也显示为逗号:

repr

我们将其称为numpy数组,但从技术上讲,它属于In [109]: data.tolist() Out[109]: ['0.12', '0.23']

numpy.ndarray

可以使用以下方法将其转换为浮点数数组:

In [110]: type(data)
Out[110]: numpy.ndarray

它仍然是In [111]: data.astype(float) Out[111]: array([0.12, 0.23]) ,只是ndarray不同。您可能需要在dtype文档中阅读有关numpy的更多信息。

错误:

  

如果要使用它进行计算,则会给我一个错误TypeError:只有大小为1的数组可以转换为Python标量

有不同的来源。 dtype有2个元素。您没有显示生成此错误的代码,但通常在绘制调用时会看到此错误。该参数应该是单个数字(通常是整数),其中,即使您的数组(即使是数字data)也是两个数字。