如何将 (n,) 数组重塑为 (n,3) 数组?

问题描述 投票:0回答:1

我有一个具有

(n,)
尺寸的数组,对于一个项目,我需要拥有这个具有
(n,3)
形状的数组。 该数组是一组 3 维点。

这是代码:

vertices =  np.array([line[7:] for line in content if line.startswith('vertex')]) #7 parce que 7 char dans 'vertex '
vertices = np.reshape(vertices,(vertices.size,3))

这是错误:

无法将大小为 13716 的数组重塑为形状 (13716,3)

如何重塑上面的数组?

arrays reshape
1个回答
0
投票

您收到的错误消息表明数组的大小 (13716) 与形状 (13716, 3) 不兼容。要重塑数组,元素总数必须在重塑前后保持相同。

说明

假设

vertices.size
是13716,这意味着你的数组有13716个元素。要将这个数组重塑为 (n, 3) 的形状,元素总数 (13716) 应完全被 3 整除并得到一个整数。

有助于解决问题的步骤 -

  1. 检查元素数量是否能被 3 整除: 确保

    vertices
    中的元素总数能被 3 整除。

  2. 数据提取: 确保数据提取逻辑正确解析 3D 点。

  3. 数组的正确重塑: 仅当元素数量可被 3 整除时才重塑数组。

以下是修改代码以确保其正常工作的方法:

import numpy as np

# Assuming 'content' is a list of strings and each 'line' contains coordinate data after 'vertex'
# Extracting the coordinates
vertices = np.array([line[7:].split() for line in content if line.startswith('vertex')], dtype=float)

# Flatten the array if necessary (this step may vary based on how data is parsed)
vertices = vertices.flatten()

# Ensure the number of elements is divisible by 3
if vertices.size % 3 != 0:
    raise ValueError("The total number of elements is not divisible by 3")

# Reshape the array
vertices = np.reshape(vertices, (-1, 3))

print(vertices.shape)  # This should print (n, 3) where n = vertices.size / 3

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.