You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将四个1×3行向量拼接为4×3矩阵?现有代码求助

问题解决:拼接1×3行向量为4×3矩阵

你的代码报错是因为ul、ur等都是一维数组(shape为(3,)),而np.concatenate指定axis=1时,要求输入数组至少有2个维度,一维数组不存在axis=1,所以会触发错误。

以下是几种可行的解决方法:

方法1:直接用np.array包裹数组列表

这是最简洁的方式,numpy会自动将一维数组堆叠成二维矩阵:

import numpy as np

ul = np.array([-320, 240, 1])
ur = np.array([320, 240, 1])
br = np.array([320, -240, 1])
bl = np.array([-320, -240, 1])

corners = np.array([ul, ur, br, bl])
print(corners)

方法2:使用np.vstack垂直堆叠

vstack专门用于垂直拼接数组,自动处理一维数组的维度适配:

import numpy as np

ul = np.array([-320, 240, 1])
ur = np.array([320, 240, 1])
br = np.array([320, -240, 1])
bl = np.array([-320, -240, 1])

corners = np.vstack([ul, ur, br, bl])
print(corners)

方法3:先将一维数组转为二维,再用concatenate

给每个数组增加一个维度(变成(1,3)的二维数组),再用axis=0拼接:

import numpy as np

ul = np.array([-320, 240, 1])
ur = np.array([320, 240, 1])
br = np.array([320, -240, 1])
bl = np.array([-320, -240, 1])

corners = np.concatenate([ul[np.newaxis, :], ur[np.newaxis, :], br[np.newaxis, :], bl[np.newaxis, :]], axis=0)
print(corners)

以上三种方法都能得到你期望的4×3矩阵输出:

[[-320  240    1]
 [ 320  240    1]
 [ 320 -240    1]
 [-320 -240    1]]

内容的提问来源于stack exchange,提问作者Nick X Tsui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 02:46:00