如何用数组x的第一列替换数组y的第一列?
嘿,这个需求用NumPy的索引操作就能轻松搞定,我给你一步步说清楚:
完整实现代码
首先先准备好你的数组:
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]])
如果你想直接修改原数组y,直接用切片赋值就行:
# 选中y的所有行、第0列(也就是你说的第一列),替换成x的内容 y[:, 0] = x.flatten()
要是不想改动原数组,想生成一个全新的结果数组res,那就先复制y再操作:
res = y.copy() res[:, 0] = x.flatten()
运行后打印res,就是你要的预期结果:
print(res) # 输出: # [[ 1 7] # [ 2 9] # [ 3 11] # [ 4 13] # [ 5 15]]
小细节解释
[:, 0]是NumPy的切片语法::表示选中所有行,0表示选中第0列(因为NumPy的索引从0开始,对应你说的“第一列”)- 为什么要用
flatten()?因为x是形状为(5,1)的二维列数组,而y的列是一维的(形状(5,)),用flatten()把x转成一维数组,能保证形状完全匹配。其实NumPy的广播机制也支持直接写res[:, 0] = x,不过显式转换会让代码逻辑更清晰~
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

