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

如何将(n,)维度的NumPy数组重塑为(n,3)维度?

问题分析与解决

你的错误核心是reshape的形状参数逻辑错误:原数组总元素数是13716,而你指定的(vertices.size,3)总元素数是13716×3,两者不匹配,自然无法重塑。

正确处理步骤

  • 先把字符串转换为数值数组
    你当前的vertices是字符串数组,每个元素是包含三个坐标的字符串(比如"1.0 2.0 3.0"),需要先拆分并转换为数值类型:

    # 拆分每个vertex行的坐标,转换为float数组
    vertices = np.array([list(map(float, line[7:].split())) for line in content if line.startswith('vertex')])
    

    这一步执行后,vertices已经是(n,3)形状的数组了,不需要再reshape。

  • 如果已经是一维数值数组,用自动计算行数的reshape
    假设你已经得到了一维的数值数组(总元素数是3的倍数),可以用-1让numpy自动计算正确的行数:

    vertices = vertices.reshape(-1, 3)
    

    这里-1会自动计算为13716//3 = 4572,最终形状就是(4572,3),符合你的需求。

为什么原来的代码不行?

你之前的代码只是把每个行的子字符串存成数组元素,得到的是(m,)形状的字符串数组(m是vertex行的数量),每个元素是一个字符串,此时vertices.size等于m。如果m×3不等于13716,或者你没把字符串转成数值,就会出现形状不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:02:35