gpt4 book ai didi

Python Numpy 数组附加空白列

转载 作者:行者123 更新时间:2023-12-01 00:31:22 25 4
gpt4 key购买 nike

我有 2 个 numpy 数组,我使用顶行作为列标题。除了 2 列之外,每个数组都具有相同的列。 arr2 将有一个不同的 C 列以及一个附加列

如何将所有这些列合并到一个 np 数组中?

arr1 = [ ['A', 'B', 'C1'], [1, 1, 0], [0, 1, 1] ]
arr2 = [ ['A', 'B', 'C2', 'C3'], [0, 1, 0, 1], [0, 0, 1, 0] ]
a1 = np.array(arr1)
a2 = np.array(arr2)

b = np.append(a1, a2, axis=0)
print(b)

# Desired Result
# A B C1 C2 C3
# 1 1 0 - -
# 0 1 1 - -
# 0 1 - 0 1
# 0 0 - 1 0

最佳答案

NumPy 数组不太适合处理具有命名列的数据,这些列可能包含不同的类型。相反,我会使用 pandas为了这。例如:

import pandas as pd

arr1 = [[1, 1, 0], [0, 1, 1] ]
arr2 = [[0, 1, 0, 1], [0, 0, 1, 0] ]

df1 = pd.DataFrame(arr1, columns=['A', 'B', 'C1'])
df2 = pd.DataFrame(arr2, columns=['A', 'B', 'C2', 'C3'])

df = pd.concat([df1, df2], sort=False)

df.to_csv('mydata.csv', index=False)

这会产生一个“数据框”,一种类似电子表格的数据结构。 Jupyter Notebooks 呈现如下:

example of dataframe rendered in HTML

您可能会注意到有一个额外的新列;这是“索引”,您可以将其视为行标签。如果您不想在 CSV 中使用它,则不需要它,但如果您继续在数据框中执行操作,则可能需要执行 df = df.reset_index() 来重新标记以更有用的方式行。

如果您希望数据帧恢复为 NumPy 数组,您可以执行 df.values 操作,然后就可以了。但它没有列名称。

最后一件事:如果您真的想留在 NumPy-land,那么请查看 structured arrays ,这为您提供了另一种方式来命名列,本质上是在数组中。老实说,自从 Pandas 出现以来,我几乎在野外见过它们。

关于Python Numpy 数组附加空白列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58159537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com