我有一个具有
(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)
如何重塑上面的数组?
您收到的错误消息表明数组的大小 (13716) 与形状 (13716, 3) 不兼容。要重塑数组,元素总数必须在重塑前后保持相同。
假设
vertices.size
是13716,这意味着你的数组有13716个元素。要将这个数组重塑为 (n, 3) 的形状,元素总数 (13716) 应完全被 3 整除并得到一个整数。
检查元素数量是否能被 3 整除: 确保
vertices
中的元素总数能被 3 整除。
数据提取: 确保数据提取逻辑正确解析 3D 点。
数组的正确重塑: 仅当元素数量可被 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
希望这有帮助!