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

如何将由二维数组构成的二维numpy数组合并为(6,3)的单一二维数组

问题:将对象类型二维数组合并为(6,3)的单一数组

给定如下模拟代码生成的对象类型二维数组t:

import numpy as np

n=3
x = np.random.randint(0,10, (n,1))
y = np.random.randint(0,10, (n,2))

t = np.empty((2,2), object)
t[0,:] = [x,y]
t[1,:] = [x+10,y+10]

需要将t合并为尺寸为(6,3)的单一数组,使其输出与np.vstack([np.hstack([x,y]), np.hstack([x,y])+10])的结果一致。


解决方法

方法1:按行拼接后垂直堆叠

直接遍历t的每一行,对每行的两个子数组执行水平拼接,再将结果垂直堆叠:

result = np.vstack([np.hstack(row) for row in t])
  • 逻辑:t[0]对应[x,y],np.hstack(t[0])得到与np.hstack([x,y])相同的(3,3)数组;t[1]对应[x+10,y+10],np.hstack(t[1])等价于np.hstack([x,y])+10,最后垂直堆叠两个数组得到(6,3)的结果。

方法2:按列拼接后水平合并

先对t的每一列执行垂直拼接,再将拼接后的列数组水平合并:

# 垂直拼接第一列的两个子数组
col0 = np.vstack(t[:, 0])
# 垂直拼接第二列的两个子数组
col1 = np.vstack(t[:, 1])
# 水平合并两列得到最终结果
result = np.hstack([col0, col1])
  • 逻辑:t[:,0]包含x和x+10,垂直拼接后得到(6,1)的数组;t[:,1]包含y和y+10,垂直拼接后得到(6,2)的数组,水平合并后恰好是(6,3)的目标尺寸,且内容与参考代码输出完全一致。

内容的提问来源于stack exchange,提问作者guyguyguy12345

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:52:29