Python Numpy数组附加空白列

问题描述 投票:1回答:1

我有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
python arrays numpy
1个回答
1
投票

NumPy数组不适用于处理带有命名列的数据,命名列可能包含不同的类型。相反,我将为此使用pandas。例如:

pandas

这会导致“数据框”,即类似于电子表格的数据结构。 Jupyter Notebook的渲染如下:

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)

您可能会注意到还有一个新的专栏;这是“索引”,您可以将其视为行标签。如果不想在CSV中使用它,则不需要它,但如果继续在数据框中执行操作,则可能需要执行example of dataframe rendered in HTML以更有用的方式重新标记行。

如果您希望将数据框作为NumPy数组返回,则可以执行df = df.reset_index(),然后就不做了。它没有列名。

最后一件事:如果您[确实]想留在NumPy-land,则签出df.values,这实际上为您提供了一种在数组中命名列的方式。老实说,自从structured arrays出现以来,我几乎没有在野外看到它们。

© www.soinside.com 2019 - 2024. All rights reserved.