3 回答
TA贡献1801条经验 获得超16个赞
实现此目的的一种方法是创建一个新数组,然后将其连接起来。例如,假设这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 数据框。
TA贡献1868条经验 获得超4个赞
# 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)
TA贡献1842条经验 获得超12个赞
附加 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]]
添加回答
举报