不同列数的NumPy数组相乘及列追加问题求助
解决方法
首先你代码里的问题出在np.append的参数上,你传的[1],[5]完全不对,应该取array2的第三列,而且要保证维度和前面的数组匹配,不然会报错。
下面是正确的实现步骤:
- 先定义示例数组(方便你测试):
import numpy as np # 示例2×2的array1 array1 = np.array([[1, 2], [3, 4]]) # 示例2×3的array2 array2 = np.array([[5, 6, 7], [8, 9, 10]])
- 截取array2的前两列并和array1做元素相乘:
# 截取前两列,切片结果本身就是numpy数组,无需再转 array2Slice = array2[:, :2] WIParray3 = np.multiply(array1, array2Slice) # 或者直接用 * 运算符,效果完全一致:WIParray3 = array1 * array2Slice
- 获取array2的第三列,注意要保持二维结构(形状为(2,1)),这样才能和WIParray3(形状(2,2))在列方向拼接:
# 方法1:用切片[:, 2:3],直接得到2×1的数组 third_col = array2[:, 2:3] # 方法2:用索引加reshape转换维度 third_col = array2[:, 2].reshape(-1, 1)
- 拼接得到最终的array3:
# 用np.append实现拼接 array3 = np.append(WIParray3, third_col, axis=1) # 或者用np.hstack,更直观的列拼接方式 array3 = np.hstack([WIParray3, third_col])
运行后得到的array3就是你要的结果:
array([[ 5, 12, 7], [24, 36, 10]])
总结一下,核心错误是np.append的第二个参数传错了,同时没注意数组维度的匹配,只要把第三列正确提取成二维数组,再执行拼接就没问题了。
内容的提问来源于stack exchange,提问作者dreamkeeper
相关产品推荐
相关产品推荐

