列表之间有什么区别

时间:2018-09-07 08:16:21

标签: python arrays python-3.x list

我有两个以相同方式获得的列表,只有第一个直接从列表中读取,第二个从postgresql中卸载:

列表1

>>> print(type(list1))
... <class 'list'>
>>> print(list1)
... [array([-0.11152368,  0.1186936 ,  0.00150046, -0.0174517 , -0.14383622,
            0.04046987, -0.07069934, -0.09602138,  0.18125986, -0.14305925])]
>>> print(type(list1[0][0]))
... <class 'numpy.float64'>

列表2

>>> print(type(list2))
... <class 'tuple'>
>>> print(list2)
... (['-0.03803351', '0.07370875', '0.03514577', '-0.07568369', '-0.07438357'])
>>> list2 = list(list2)
>>> print(type(list2))
... <class 'list'>
>>> print(list2)
... [['-0.03803351', '0.07370875', '0.03514577', '-0.07568369', '-0.07438357']]
>>> print(type(list2[0][0]))
... <class 'str'>

我如何看待元素之间的差异?如何从列表2中获取诸如<class 'numpy.float64'>之类的项目?

为什么类型list1是numpy,为什么它是类“列表”?

2 个答案:

答案 0 :(得分:1)

list1是一个list,其中包含1个元素,该元素是一个numpy.array,其中包含多个floats64

list2list,其中包含1个元素,而list是包含多个元素的元素  strings(看起来很像floats)。

您可以像这样转换它们:

import numpy as np

# list of list of strings that look like floats
list2 = [['-0.03803351', '0.07370875', '0.03514577', '-0.07568369', '-0.07438357']]

# list of np.arrays that contain float64's
data = list([np.array(list(map(np.float64, list2[0])))])  # python 3.x

print(data)
print(type(data))
print(type(data[0]))
print(type(data[0][0]))

输出:

[array([-0.03803351,  0.07370875,  0.03514577, -0.07568369, -0.07438357])]
<type 'list'>
<type 'numpy.ndarray'>
<type 'numpy.float64'>

答案 1 :(得分:-1)

正如Patrick Artner所写。如果list2包含多个数组,则可以使用:

@4=d