Numpy用法:连接(join)一个NumPy数组和pandas DataFrame

Numpy用法:连接(join)一个NumPy数组和pandas DataFrame

NumpypandasPython 数据科学中最重要的两个库。Numpy 提供了数值计算和数组的基本函数,而 pandas 则提供了用于表格形式数据集的强大的数据操纵函数。在本文中,我们将探讨如何使用 Numpy 的 concatenate 函数将 Numpy 数组与 pandas 数据框连接起来。

阅读更多:Numpy 教程

Numpy Concatenate 函数

Numpy 中的 concatenate 函数用于沿着指定轴连接相同形状的两个或多个数组。它以两个或多个数组作为输入并返回一个新数组。concatenate 的语法为:

np.concatenate((array1, array2, ...), axis=0)

axis 参数指定沿着哪个维度连接数组。如果 axis=0,则垂直连接数组,如果 axis=1,则水平连接数组。如果数组在指定的轴上具有不同的形状,则会引发 ValueError。

将 Numpy 数组与 pandas 数据框连接起来

要将 Numpy 数组与 pandas 数据框连接起来,我们可以使用 concatenate 函数。假设我们有一个大小为 (3,1) 的 Numpy 数组和一个只有一列的 pandas 数据框。我们可以按以下方式在垂直方向上将它们连接起来:

import numpy as np
import pandas as pd

a = np.array([[1], [2], [3]])
df = pd.DataFrame({'A': [4, 5, 6]})

result = np.concatenate([a, df.values], axis=1)

在这个例子中,我们首先创建了一个大小为 (3,1) 的 Numpy 数组,其中包含值 1、2 和 3。然后,我们创建一个名为“A”的单列 pandas 数据框,其中包含值 4、5、6。最后,我们使用 concatenate 函数沿着轴=1将 Numpy 数组和数据框在垂直方向上连接,并将结果存储在名为“result”的变量中。

连接的结果是一个形状为 (3,2) 的 Numpy 数组,其中包含值:

array([[1, 4],
       [2, 5],
       [3, 6]])

请注意,在此示例中,我们使用 DataFrame 的 values 属性来获取底层的 Numpy 数组。这是因为 concatenate 函数期望输入的是 Numpy 数组,而不是 pandas 数据框。

将多个 Numpy 数组与 pandas 数据框连接起来

我们也可以使用 concatenate 函数将多个 Numpy 数组与 pandas 数据框连接起来。假设我们有三个 Numpy 数组和一个有三列的 pandas 数据框。我们可以按以下方式在水平方向上将它们连接起来:

a = np.array([[1], [2], [3]])
b = np.array([[4], [5], [6]])
c = np.array([[7], [8], [9]])
df = pd.DataFrame({'A': [10, 11, 12], 'B': [13, 14, 15], 'C': [16, 17, 18]})

result = np.concatenate([a, b, c, df.values], axis=1)

在这个例子中,我们创建了三个大小为 (3,1) 的 Numpy 数组,分别包含值 1、2 和 3、4、5 和 6、7、8 和 9。我们还创建了一个有三列名为“A”、“B”和“C”的 pandas 数据框,其中包含值 10、11、12、13、14、15 和 16、17、18。最后,我们使用 concatenate 函数沿着轴=1将 Numpy 数组和数据框在水平方向上连接,并将结果存储在名为“result”的变量中。

将拼接的结果是一个形状为(3,6)的numpy数组,包含以下值:

array([[ 1,  4,  7, 10, 13, 16],
       [ 2,  5,  8, 11, 14, 17],
       [ 3,  6,  9, 12, 15, 18]])

在循环中连接numpy数组和pandas DataFrame

在某些情况下,我们可能需要在循环中连接多个numpy数组或pandas DataFrame。例如,假设我们有一个numpy数组列表,并且我们想要将它们与pandas DataFrame垂直连接起来。我们可以使用for循环逐个连接数组,使用concatenate函数:

arrays = [np.array([[1], [2], [3]]), np.array([[4], [5], [6]]), np.array([[7], [8], [9]])]
df = pd.DataFrame({'A': [10, 11, 12]})

result = df.values
for a in arrays:
    result = np.concatenate([result, a], axis=1)

在这个例子中,我们有一个三个numpy数组的列表,每个大小为(3,1),包含值[1],[2],[3],[4],[5],[6],[7],[8],[9]。我们还有一个名为’A’的单列pandas DataFrame,其中包含值10,11,12。我们定义一个变量called ‘result’来存储连接后的数组。

我们然后使用一个for循环,使用concatenate函数将列表’arrays’中的每个数组水平与’result’数组沿axis=1连接起来。结果数组在每次迭代时存储回到“result”中。

最终值’result’是一个形状为(3,4)的numpy数组,包含以下值:

array([[ 10,   1,   4,   7],
       [ 11,   2,   5,   8],
       [ 12,   3,   6,   9]])

总结

numpy中的concatenate函数提供了一种强大的工具,用于将numpy数组连接到pandas DataFrame中。通过理解如何使用concatenate沿着指定轴连接数组,我们可以在Python数据科学中操作数据集以满足我们的需求。无论是连接具有相同维数的数组还是在循环中连接数组,concatenate函数都是任何使用Python的数据科学家工具箱中的有价值的工具。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程