如何将 Pandas Dataframe 转换为 Numpy 数组?

关注者
4
被浏览
150,856

3 个回答

下面我们将介绍两种方法

1.to_numpy 方法将 Dataframe 转换为 NumPy 数组

pandas.Dataframe 是具有行和列的二维表格数据结构。可以使用 to_numpy 方法将该数据结构转换为 NumPy 数组:

# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(
    data=np.random.randint (
        0, 10, (6,4)),
    columns=["a", "b", "c", "d"])
nmp=df.to_numpy()
print(nmp) 
print(type(nmp))

输出:

[[5 5 1 3]
 [1 6 6 0]
 [9 1 2 0]
 [9 3 5 3]
 [7 9 4 9]
 [8 1 8 9]]
<class 'numpy.ndarray'>

可以通过以下方法使用 Dataframe.values 方法来实现:

# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(
    data=np.random.randint(
        0, 10, (6,4)),
    columns=["a", "b", "c", "d"])
nmp=df.values
print(nmp) 
print(type(nmp))

输出:

[[8 8 5 0]
 [1 7 7 5]
 [0 2 4 2]
 [6 8 0 7]
 [6 4 5 1]
 [1 8 4 7]]
<class 'numpy.ndarray'>

如果我们想在 NumPy 数组中包含 indexes,则需要对 Dataframe.values 应用 reset_index()

# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(
    data=np.random.randint(
        0, 10, (6,4)),
    columns=["a", "b", "c", "d"])
nmp=df.reset_index().values
print(nmp) 
print(type(nmp))

输出:

[[0 1 0 3 7]
 [1 8 2 5 1]
 [2 2 2 7 3]
 [3 3 4 3 7]
 [4 5 4 4 3]
 [5 2 9 7 6]]
<class 'numpy.ndarray'>

2.to_records() 方法将 Dataframe 转换为 NumPy 记录数组

如果你需要 dtypes,则 to_records() 是最好的选择。在性能方面,to_numpy()to_records() 几乎相同:

# python 3.x
import pandas as pd
import numpy as np
df = pd.DataFrame(
    data=np.random.randint(
        0, 10, (6,4)),
    columns=["a", "b", "c", "d"])
nmp=df.to_records()
print(nmp) 
print(type(nmp))

输出:

[(0, 0, 4, 6, 1) 
 (1, 3, 1, 7, 1) 
 (2, 9, 1, 6, 4) 
 (3, 1, 4, 6, 9)
 (4, 9, 1, 3, 9)
 (5, 2, 5, 7, 9)]
<class 'numpy.recarray'>

多动手,多练习,多理解,加油!!!

觉得不错的话,记得帮我 @小象点个赞哟,祝大家都能学有所获!

python相关问题集锦

如何计算值在 Pandas DataFrame 中出现的频率?

如何计算 Pandas Dataframe 列中的 NaN 出现的次数?

参考:Converting Numpy Array to CSV

在数据分析和处理中,经常会涉及到将数据从一个形式转换为另一个形式的操作。其中,将Numpy数组转换为csv文件是一种常见的操作,因为csv文件是一种通用的数据存储格式,方便与其他软件或平台进行交互。

更多技术文章,全网首发公众号 “极客钛” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

将Numpy数组转换为csv的原因

Numpy是Python中用于科学计算的一个重要库,提供了高效的多维数组对象和数学函数。在数据分析中,我们通常会利用Numpy对数据进行处理和计算。而在与其他软件或平台交互时,需要将处理好的数据保存为csv文件,方便对接。

Numpy数组转换为csv的方法

使用np.savetxt()函数

Numpy提供了一个方便的方法来将数组保存为csv文件,即使用np.savetxt()函数。该函数的语法如下:

np.savetxt(fname, X, delimiter=",")

其中,fname为要保存的文件名,X为要保存的Numpy数组,delimiter为分隔符,默认为逗号。

下面以一个示例来说明如何将Numpy数组转换为csv文件:

import numpy as np

# 创建一个随机的3x3的numpy数组
arr = np.random.rand(3, 3)

# 将数组保存为csv文件
np.savetxt("data.csv", arr, delimiter=",")

# 读取保存的csv文件
data = np.genfromtxt("data.csv", delimiter=",")

print(data)

运行上述代码后,会生成一个名为data.csv的csv文件,其中包含随机生成的3x3的Numpy数组。然后通过np.genfromtxt()函数可以读取该csv文件,并将数据加载为Numpy数组。

输出结果如下:

在data.csv文件中,保存的数据如下:

总结

通过使用Numpy的np.savetxt()函数,我们可以方便地将Numpy数组保存为csv文件,实现了数据格式的转换。这一操作使得我们可以更方便地与其他软件或平台进行数据交互,为数据分析和处理提供了便利。

更多技术文章,全网首发公众号 “极客钛” 锁定 -上午11点 - ,感谢大家关注、转发、点赞!

创建空的Numpy数组