使用 df.to_numpy()是推荐的方法,因为它提供了从 pandas 对象获取 NumPy 数组的一致且可靠的方法。它在 Index、Series 和 DataFrame 对象上定义,默认情况下,它返回底层数据的视图,这意味着对 NumPy 数组所做的任何修改也将反映在 pandas 对象中。如果需要数据的副本,可以使用copy=True参数。
需要注意的是,df.values在当前版本的pandas中不会被弃用,但是建议对新代码使用 df.to_numpy() 并尽快迁移到较新的 API可能。
要将 pandas 数据帧转换为 NumPy 数组时保留数据类型,可以使用 DataFrame.to_records() 方法。
将 pandas 导入为 pd<br>将 numpy 导入为np</p> <p>索引 = [1, 2, 3, 4, 5, 6, 7]<br>a = [np.nan, np.nan, np.nan, 0.1, 0.1, 0.1, 0.1] <br>b = [0.2, np.nan, 0.2, 0.2, 0.2, np.nan, np.nan]<br>c = [np.nan, 0.5, 0.5, np.nan, 0.5, 0.5, np.nan]<br>df = pd.DataFrame({'A': a, 'B': b, 'C': c},index=index)<br>df = df.rename_axis('ID')</p> <h1>将 DataFrame 转换为保留 dtypes 的 NumPy 数组</h1> <p>array = df.to_records()</p> <h1>打印 NumPy array</h1> <p>print(array)<br>
代码输出如下:
<br> rec.array([('ID', '索引', 'A', 'B', 'C')]</p> <pre class="brush:php;toolbar:false"> [1, 'a', nan, 0.2, nan], [2, 'b', nan, nan, 0.5], [3, 'c', nan, 0.2, 0.5], [4, 'd', 0.1, 0.2, nan], [5, 'e', 0.1, 0.2, 0.5], [6, 'f', 0.1, nan, 0.5], [7, 'g', 0.1, nan, nan]), dtype=[('ID', '<i8'), ('index', 'O'), ('A', '<f8'), ('B', '<f8'), ('C', '<f8')])
如您所见,NumPy 数组保留 DataFrame 中列的 dtypes。
以上是如何高效地将 Pandas DataFrame 转换为 NumPy 数组?的详细内容。更多信息请关注PHP中文网其他相关文章!