Хранение numpy.ndarrays из цикла

Я пытаюсь сохранить numpy.ndarrays, определенный как x_c, y_c, а также z_c для каждой итерации цикла:

      for z_value in np.arange(0, 5, 1):
    ms.set_current_mesh(0) 
    planeoffset : float = z_value 
    ms.compute_planar_section(planeaxis = 'Z Axis', planeoffset = planeoffset)
    m = ms.current_mesh()
    matrix_name = m.vertex_matrix()
    x_c = matrix_name[:,0]
    y_c = matrix_name[:,1]
    z_c = matrix_name[:,2]

Я хотел бы иметь возможность вспомнить три массива при любом z_value, желательно со ссылкой на z_value, т.е. x_c @ z_value = 2 или похожие.

Спасибо за любую помощь!

ps очень новичок в программировании, поэтому, пожалуйста, не торопитесь.

1 ответ

Решение

Вы должны хранить каждый массив во внешней переменной, например в словаре

      x_c={}
y_c={}
z_c={}
for z_value in np.arange(0, 5, 1):
    ms.set_current_mesh(0)
    planeoffset = float(z_value)
    ms.compute_planar_section(planeaxis = 'Z Axis', planeoffset = planeoffset)
    m = ms.current_mesh()
    m.compact()
    print(m.vertex_number(), "vertices in Planar Section Z =", planeoffset)

    matrix_name = m.vertex_matrix()
    x_c[planeoffset] = matrix_name[:,0]
    y_c[planeoffset] = matrix_name[:,1]
    z_c[planeoffset] = matrix_name[:,2]

Пожалуйста, убедитесь, что вы звоните м. compact () перед доступом к vertex_matrix, иначе вы получите MissingCompactnessExceptionошибка. Пожалуйста, обратите внимание, что хранить что-либо в x_c[2] или x_c[2.0] - это не одно и то же, поэтому выберите, должен ли ваш индекс быть целыми числами или числами с плавающей запятой, и сохраните тот же тип (в этом примере это числа с плавающей запятой).

Позже вы можете вспомнить такие значения:

      
print("X Values with z=2.0")
print(x_c[2.0])
Другие вопросы по тегам