我想使用与pandas“ read_sql_query”等效的东西,将数据库中的数据加载到numpy数组中,而不是pandas数据帧中。
在大熊猫中,我使用类似的东西:
df = pd.read_sql_query(sql="select * from db;", con=con, index_col='index')
现在我需要一个类似的功能
A = read_sql_to_np(sql="select * from db;")
其中A是一个numpy数组。
答案 0 :(得分:2)
可以使用numpy
方法将任何数据帧转换为to_array()
数组:
>>> df = pandas.DataFrame({'A': [1, 2, 3],
'B': [1.0, 2.0, 3.0],
'C': ['a', 'b', 'c']})
>>> df.to_numpy()
array([[1, 1.0, 'a'],
[2, 2.0, 'b'],
[3, 3.0, 'c']], dtype=object)
>>> df['A'].to_numpy()
array([1, 2, 3])
>>> df[['A', 'B']].to_numpy()
array([[1., 1.],
[2., 2.],
[3., 3.]])
>>> df[['C']].to_numpy()
array([['a'],
['b'],
['c']], dtype=object)
因此您可以简单地使用pandas
,然后从结果数据框中提取numpy数组。
正如Parfait所指出的那样,在进行转换时必须注意数据类型。我在上面的示例中将其保留为隐式,但是请注意第一个示例如何使用dtype=object
生成数组,而第二个示例如何生成普通的浮点数组。我认为,numpy
中有关数据类型的详细讨论超出了这个问题的范围。