Я нашел старый сценарий python, который не работает ни в Python3, ни в Python2. Однако это должен быть действующий функциональный код.
Он генерирует некоторые 3d-координаты и помещает их в массив. Позже он записывает массив в файл. Здесь возникает ошибка.
Массив, содержащий данные в следующей форме:
(Pdb) vertices
array([[ 0.00000000e+00, 3.74741921e-15, 6.50000000e+01],
[ 0.00000000e+00, 3.85844844e-15, 6.30132450e+01],
[ 1.87370960e-15, 3.24536023e-15, 6.50000000e+01],
[ 1.93591517e-15, 3.35310344e-15, 6.32317881e+01]])
Фрагмент кода:
# Create the mesh
obj = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype))
for i, f in enumerate(faces):
for j in range(3):
obj.vectors[i][j] = vertices[f[j],:]
Ошибка:
IndexError: допустимыми индексами являются только целые числа, срезы (:
), многоточие (...
), numpy .newaxis (None
) и целочисленные или логические массивы
Поскольку я новичок в Python (я из PHP, C ++)), я действительно не могу прочитать / понять адресацию "vertices [f [j] ,:]". Я думал преобразовать его как INT, например «vertices [ int (f [j]),:]», это исправит, но тогда и геометрия тоже неисправна.
Кто-нибудь может объяснить Мне эта часть индексной адресации?
ОБНОВЛЕНИЕ: Да, Faces - это еще один массив вершин из трех кортежей.
(Pdb) p(f)
array([ 0., 26., 2.])
(Pdb) p(j)
0
Хмм. Означает ли утверждение «вершины [f [j] ,:]» взять первое и второе значение и игнорировать третье ?? Мне все еще интересно, что коды работают в прошлом.