添加新行会导致 numpy.asarray 中出现 ValueError
Adding new lines results in ValueError in numpy.asarray
在添加邻居语句(我用 'new' 评论)之前,一切正常。现在,当使用numpy.asarray时,出现以下错误:
ValueError:无法将形状 (3,3) 中的输入数组广播到形状 (3)。
我真的很困惑,因为新行没有改变旋转数组的任何内容。
def rre(mesh, rotations):
"""
Relative Rotation Encoding (RRE).
Return a compact representation of all relative face rotations.
"""
all_rel_rotations = neighbors = []
for f in mesh.faces():
temp = [] # new
for n in mesh.ff(f):
rel_rotation = np.matmul(rotations[f.idx()], np.linalg.inv(rotations[n.idx()]))
all_rel_rotations.append(rel_rotation)
temp.append(n.idx()) # new
neighbors.append(temp) # new
all_rel_rotations = np.asarray(all_rel_rotations)
neighbors = np.asarray(neighbors) # new
return all_rel_rotations, neighbors
问题的根源很可能是行:
all_rel_rotations = neighbors = []
在 Python 中列表是可变的并且 all_rel_rotations
和 neighbors
指向同一个列表,所以如果你这样做 all_rel_rotations.append(42)
你会看到 neighbors = [42, ]
行:
all_rel_rotations.append(rel_rotation)
附加一个二维数组,而
neighbors.append(temp)
将一维数组(或相反的方式)附加到同一个列表。那么:
all_rel_rotations = np.asarray(all_rel_rotations)
尝试转换为数组并感到困惑。
如果需要列表做
all_rel_rotations = []
neighbors = []
在添加邻居语句(我用 'new' 评论)之前,一切正常。现在,当使用numpy.asarray时,出现以下错误:
ValueError:无法将形状 (3,3) 中的输入数组广播到形状 (3)。
我真的很困惑,因为新行没有改变旋转数组的任何内容。
def rre(mesh, rotations):
"""
Relative Rotation Encoding (RRE).
Return a compact representation of all relative face rotations.
"""
all_rel_rotations = neighbors = []
for f in mesh.faces():
temp = [] # new
for n in mesh.ff(f):
rel_rotation = np.matmul(rotations[f.idx()], np.linalg.inv(rotations[n.idx()]))
all_rel_rotations.append(rel_rotation)
temp.append(n.idx()) # new
neighbors.append(temp) # new
all_rel_rotations = np.asarray(all_rel_rotations)
neighbors = np.asarray(neighbors) # new
return all_rel_rotations, neighbors
问题的根源很可能是行:
all_rel_rotations = neighbors = []
在 Python 中列表是可变的并且 all_rel_rotations
和 neighbors
指向同一个列表,所以如果你这样做 all_rel_rotations.append(42)
你会看到 neighbors = [42, ]
行:
all_rel_rotations.append(rel_rotation)
附加一个二维数组,而
neighbors.append(temp)
将一维数组(或相反的方式)附加到同一个列表。那么:
all_rel_rotations = np.asarray(all_rel_rotations)
尝试转换为数组并感到困惑。
如果需要列表做
all_rel_rotations = []
neighbors = []