Я написал скрипт, который берет указанный октаэдр и уточняет его. Для контекста у меня есть изображения вывода с итерациями, установленными в 0, 1 и 2.
Однако, когда я устанавливаю iterations=3, я получаю следующую ошибку:
Traceback (самый последний вызов — последний): Файл «/Users/amaurydeburgos/Documents/WinterBreak2023.py», строка 78, в ax.add_collection3d(Poly3DCollection([ [ Vertices for i in f] for f in Faces],edgecolors='k',facecolors='w')) Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mpl_toolkits/mplot3d/art3d.py", строка 701, в __init__ super().__init__(verts, *args, **kwargs) Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/_api/deprecation.py", строка 454, в оболочке return func(*args, **kwargs) Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/collections.py", строка 1176, в __init__ self.set_verts(верты, закрыто) Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mpl_toolkits/mplot3d/art3d.py", строка 745, в set_verts self.get_vector(верты) Файл «/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mpl_toolkits/mplot3d/art3d.py», строка 734, в get_vector xs, ys, zs = np.row_stack(segments3d).T Файл «», строка 200, в vstack Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/numpy/core/shape_base.py", строка 296, в vstack return _nx.concatenate(arrs, 0, dtype=dtype, casting=casting) Файл "", строка 200, в объединении ValueError: все измерения входного массива, за исключением оси конкатенации, должны точно совпадать, но по измерению 1 массив с индексом 0 имеет размер 3, а массив с индексом 689 имеет размер 0. Я не знаю, что происходит не так. Любая помощь очень ценится. Сценарий, который я написал, приведен ниже:
импортировать pylab как plt импортировать numpy как np из массива импорта numpy из нормы импорта numpy.linalg из оператора импорта добавить из комбинаций импорта itertools из mpl_toolkits.mplot3d.art3d импорт Poly3DCollection # Начальный октаэдр Вершины = [ (0,0,1), (1,0,0), (0,1,0), (-1,0,0), (0,-1,0), (0,0, -1) ] Края = { замороженный набор({0,1}), замороженный набор({0,2}), замороженный набор({0,3}), замороженный набор({0,4}), замороженный набор({1,2}), замороженный набор({2,3}), замороженный набор({3,4}), замороженный набор({1,4}), замороженный набор({1,5}), замороженный набор({2,5}), замороженный набор({3,5}), замороженный набор({4,5}) } Faces = { замороженный набор({0,1,2}), замороженный набор({0,2,3}), замороженный набор({0,3,4}), замороженный набор({0,1,4}), замороженный набор({1,2,5}), замороженный набор({2,3,5}), замороженный набор({3,4,5}), замороженный набор({1,4,5}) } итерации = 3 для меня в диапазоне (итерации): # Инициализация набора новых вершин, новых ребер и новых граней счетчик = len(Вершины)-1 новыеВертицес = [] новые края = установить () новыеЛица = установить() # Добавление элементов newVertices и тривиальных элементов newEdges для края в Edges: счетчик = счетчик+1 newVertex = np.array([0,0,0]) для вершины в ребре: newVertex = np.add(newVertex,np.array(Vertices[vertex])) newEdge = замороженный набор({вершина,счетчик}) newEdges.add(newEdge) newVertex = np.divide(newVertex,norm(newVertex,2)) newVertices.append(кортеж(newVertex)) # Добавление нетривиальных элементов newEdges и элементов newFaces для лица в Faces: middleFace = установить () SpecialEdges=установить() парыOfSpecialEdges={(a,b) для a,b в комбинациях({ребро для края в newEdges if len(edge.intersection(face))==1},2) if (a & b) и len((a- face).intersection(b-face))==1} для пары в PairsOfSpecialEdges: для края в паре: SpecialEdges.add(край) для вершины на грани: IncidentEdges={ребро для ребра в SpecialEdges, если вершина в ребре} newEdge=установить() для края в инциденте: для v в ребре: если v==вершина: продолжать еще: newEdge.add(в) middleFace.add(v) newEdges.add(frozenset(newEdge)) newEdge.add(вершина) newFaces.add(frozenset(newEdge)) newFaces.add(frozenset(middleFace)) Вершины = Вершины+новыеВершины Края.очистить() Edges.update(newEdges) Лица.clear() Faces.update(newFaces) ### График ### рис = plt.figure() топор = plt.axes(проекция='3d') ax.set(xlim=(-1,1), ylim=(-1,1), zlim=(-1,1)) ax.add_collection3d(Poly3DCollection([ [ Vertices for i in f] for f in Faces],edgecolors='k',facecolors='w')) plt.axis('выкл') plt.show()
Я написал скрипт, который берет указанный октаэдр и уточняет его. Для контекста у меня есть изображения вывода с итерациями, установленными в 0, 1 и 2. [img]https://i.stack.imgur.com/ttGob.png[/img]
[img]https://i.stack.imgur .com/pvSFO.png[/img]
[img]https://i.stack.imgur.com/WG5gx.png[/img]
Однако, когда я устанавливаю iterations=3, я получаю следующую ошибку:
Traceback (самый последний вызов — последний): Файл «/Users/amaurydeburgos/Documents/WinterBreak2023.py», строка 78, в ax.add_collection3d(Poly3DCollection([ [ Vertices[i] for i in f] for f in Faces],edgecolors='k',facecolors='w')) Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mpl_toolkits/mplot3d/art3d.py", строка 701, в __init__ super().__init__(verts, *args, **kwargs) Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/_api/deprecation.py", строка 454, в оболочке return func(*args, **kwargs) Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/matplotlib/collections.py", строка 1176, в __init__ self.set_verts(верты, закрыто) Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mpl_toolkits/mplot3d/art3d.py", строка 745, в set_verts self.get_vector(верты) Файл «/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/mpl_toolkits/mplot3d/art3d.py», строка 734, в get_vector xs, ys, zs = np.row_stack(segments3d).T Файл «», строка 200, в vstack Файл "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/numpy/core/shape_base.py", строка 296, в vstack return _nx.concatenate(arrs, 0, dtype=dtype, casting=casting) Файл "", строка 200, в объединении ValueError: все измерения входного массива, за исключением оси конкатенации, должны точно совпадать, но по измерению 1 массив с индексом 0 имеет размер 3, а массив с индексом 689 имеет размер 0. Я не знаю, что происходит не так. Любая помощь очень ценится. Сценарий, который я написал, приведен ниже: импортировать pylab как plt импортировать numpy как np из массива импорта numpy из нормы импорта numpy.linalg из оператора импорта добавить из комбинаций импорта itertools из mpl_toolkits.mplot3d.art3d импорт Poly3DCollection # Начальный октаэдр Вершины = [ (0,0,1), (1,0,0), (0,1,0), (-1,0,0), (0,-1,0), (0,0, -1) ] Края = { замороженный набор({0,1}), замороженный набор({0,2}), замороженный набор({0,3}), замороженный набор({0,4}), замороженный набор({1,2}), замороженный набор({2,3}), замороженный набор({3,4}), замороженный набор({1,4}), замороженный набор({1,5}), замороженный набор({2,5}), замороженный набор({3,5}), замороженный набор({4,5}) } Faces = { замороженный набор({0,1,2}), замороженный набор({0,2,3}), замороженный набор({0,3,4}), замороженный набор({0,1,4}), замороженный набор({1,2,5}), замороженный набор({2,3,5}), замороженный набор({3,4,5}), замороженный набор({1,4,5}) } итерации = 3 для меня в диапазоне (итерации): # Инициализация набора новых вершин, новых ребер и новых граней счетчик = len(Вершины)-1 новыеВертицес = [] новые края = установить () новыеЛица = установить() # Добавление элементов newVertices и тривиальных элементов newEdges для края в Edges: счетчик = счетчик+1 newVertex = np.array([0,0,0]) для вершины в ребре: newVertex = np.add(newVertex,np.array(Vertices[vertex])) newEdge = замороженный набор({вершина,счетчик}) newEdges.add(newEdge) newVertex = np.divide(newVertex,norm(newVertex,2)) newVertices.append(кортеж(newVertex)) # Добавление нетривиальных элементов newEdges и элементов newFaces для лица в Faces: middleFace = установить () SpecialEdges=установить() парыOfSpecialEdges={(a,b) для a,b в комбинациях({ребро для края в newEdges if len(edge.intersection(face))==1},2) if (a & b) и len((a- face).intersection(b-face))==1} для пары в PairsOfSpecialEdges: для края в паре: SpecialEdges.add(край) для вершины на грани: IncidentEdges={ребро для ребра в SpecialEdges, если вершина в ребре} newEdge=установить() для края в инциденте: для v в ребре: если v==вершина: продолжать еще: newEdge.add(в) middleFace.add(v) newEdges.add(frozenset(newEdge)) newEdge.add(вершина) newFaces.add(frozenset(newEdge)) newFaces.add(frozenset(middleFace)) Вершины = Вершины+новыеВершины Края.очистить() Edges.update(newEdges) Лица.clear() Faces.update(newFaces) ### График ### рис = plt.figure() топор = plt.axes(проекция='3d') ax.set(xlim=(-1,1), ylim=(-1,1), zlim=(-1,1)) ax.add_collection3d(Poly3DCollection([ [ Vertices[i] for i in f] for f in Faces],edgecolors='k',facecolors='w')) plt.axis('выкл') plt.show()
Размеры входных данных всегда одинаковы, недостающих частей нет.
Но почему возникает ошибка при правильном выполнении двух итераций?
Сообщение об ошибке
Файл , строка 101, при вызове
Определенная форма должна либо точно совпадать с входной формой...
Я работаю над сценарием Python, который должен вычислять сумму списка чисел. Однако при запуске кода я сталкиваюсь с ошибкой TypeError. Вот минимальный пример:
numbers =
total = sum(numbers)
print(total)
У меня есть PHP-скрипт, который копирует файлы из одной папки в другую в корзине S3 с помощью действия copyObject. Однако если имя файла содержит знак процента (%), это приводит к ошибке 400 Bad Request:
InvalidArgument Invalid copy source...
Я пишу этот вопрос, чтобы попросить помощи в использовании JIB для создания и отправки образа Docker в мой Docker Hub. Во-первых, я подумал, что проблема в том, что при входе в систему не указаны правильные учетные данные. В настоящее время я...
python_server.py: скрипт Python, открывающий сокет в Mac OS
lua_client.lua: скрипт Lua, который отправляет и получает сообщения через один и тот же сокет.
MAME: эмулятор мультиаркадных автоматов. Эмулятор,...