添加列 Numpy 数组 python

我对 python 非常陌生,并且对 R 非常熟悉,但使用 Numpy 数组我的问题非常简单:

观察:

我有一个浮点类型的维度为 (100,2) 的数组 X,我想添加第三列,最好添加到维度为 (100,3) 的新 Numpy 数组中,以便第三列 = col(1)^2对于 X 数组中的每一行。

我的理解是 Numpy 数组通常具有固定维度,因此我可以创建一个新的 100x3 暗淡数组,我只是不知道如何使用 Numpy 数组来做到这一点。

谢谢!


桃花长相依
浏览 116回答 3
3回答

侃侃尔雅

实现此目的的一种方法是创建一个新数组,然后将其连接起来。例如,假设这M当前是您的数组。您可以将 col(1)^2 计算为C = M[:,0] ** 2(我将其解释为第 1 列的平方,而不是第 1 列的第二列中的值的幂)。C现在将是一个形状为 (100, ) 的数组,因此我们可以使用它来重塑它,C = np.expand_dims(C, 1)这将创建一个长度为 1 的新轴,因此我们的新列现在具有形状 (100, 1)。这很重要,因为我们希望所有两个数组在连接时都具有相同的维数。这里的最后一步是使用连接它们np.concatenate。总的来说,我们的结果看起来像这样C = M[:, 0] ** 2 C = np.expand_dims(C, 1) M = np.concatenate([M, C], axis=1) #third row will now be col(1) ^ 2如果你是那种喜欢一字排开做事的人,你有:M = np.concatenate([M, np.expand_dims(M[:, 0] ** 2, 0)], axis=1)话虽这么说,我建议看看Pandas,在我看来,它更自然地支持这些操作。在熊猫中,这将是M["your_col_3_name"] = M["your_col_1_name"] ** 2其中 M 是 pandas 数据框。

MYYA

# generate an array with shape (100,2), fill with 2.a = np.full((100,2),2)# calcuate the square to first column, this will be a 1-d array.squared=a[:,0]**2# concatenate the 1-d array to a, # first need to convert it to 2-d arry with shape (100,1) by reshape(-1,1)c = np.concatenate((a,squared.reshape(-1,1)),axis=1)

红颜莎娜

附加 axis=1 应该可以。a = np.zeros((5,2))b = np.ones((5,1))print(np.append(a,b,axis=1))这应该返回:[[0,0,1],   [0,0,1],   [0,0,1],   [0,0,1],   [0,0,1]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python