如何替换数组的第一列?y'通过数组的第一列' x'?
x = np.array([[1]
[2]
[3]
[4]
[5]])
y = np.array([[6, 7]
[8, 9]
[10, 11]
[12, 13]
[14, 15]])
预期结果将是:
res = np.array([[1, 7]
[2, 9]
[3, 11]
[4, 13]
[5, 15]])
答案 0 :(得分:1)
首先要注意的是 numpy数组没有行和列。这不仅仅是一个术语问题。他们真的没有行和列。相反,它们具有尺寸和形状。
例如,以下数组具有1个维度和形状(5,)
(这是一个带有一个元素的元组)。
z = np.array([1, 2, 3, 4, 5])
print(z.ndim, z.shape) # 1 (5,)
<强>就地强>
清除完毕后,您可以使用numpy
数组来执行的操作:
y[:, 0][:, None] = x
print(y)
# [[ 1 7]
# [ 2 9]
# [ 3 11]
# [ 4 13]
# [ 5 15]]
[:, None]
部分的原因是为了确保等式左边的尺寸和形状与右边的尺寸和形状相同。
新阵列
如果你真的需要一个新数组,只需复制数组并执行相同的操作:
res = y.copy()
res[:, 0][:, None] = x
答案 1 :(得分:-1)
你的意思是这样吗?
我们定义一个辅助函数merge
来从列表中提取元素,我们采用两个参数a
和b
作为列表,因此我们可以通过索引访问它们的值。我们需要x
子列表中的第一个也是唯一一个值,因此我们通过a[0]
得到它,通过访问y
获取b[1]
子列表中的第二个值将其作为包含这些值的新列表返回。
然后我们map
我们的帮助merge
同时列出x
和y
,将结果转换为list()
并将其投放到np.array()
}
import numpy as np
x = np.array([[1],[2],[3],[4],[5]])
y = np.array([[6, 7], [8, 9], [10, 11], [12, 13], [14, 15]])
merge = lambda a,b: [a[0],b[1]]
res = np.array(list(map(merge, x, y)))
#show results
print(res)