Найдите max и min координаты y массивов 3D numpy - PullRequest
0 голосов
/ 07 мая 2020

Я полный новичок в Python и пытаюсь использовать его для создания файла объединенных данных, который будет использоваться в молекулярном моделировании.

Я пытаюсь разместить одну группу атомов над другой по оси Y с использованием кода ASE python. Для этого мне нужно найти минимальную координату y одной группы атомов, хранящуюся как массив 3D numpy (atom_1), и максимальную координату y второй группы атомов, хранящуюся как массив 3D numpy (atom_2). Какой лучший способ сделать это?

Я пробовал:

y_min = np.max([atoms_2[:,1]])

y_max = np.min([atoms_1[:,1]])

Не уверен, что синтаксис правильный. Любая помощь или советы приветствуются.

Ответы [ 3 ]

2 голосов
/ 07 мая 2020

Кажется, что вы делаете правильно. Вы также можете удалить скобки:

y_min = np.max(atoms_2[:,1])

y_max = np.min(atoms_1[:,1])

np.max - это псевдоним для np.amax, предложенный в комментариях.

0 голосов
/ 07 мая 2020

Вы также можете передать ось в max и min

a = np.arange(27).reshape(3,3,-1)

a.max(axis=1), a.min(axis=1)

Вывод:

(array([[ 6,  7,  8],
        [15, 16, 17],
        [24, 25, 26]]),
 array([[ 0,  1,  2],
        [ 9, 10, 11],
        [18, 19, 20]]))
0 голосов
/ 07 мая 2020

Вы можете получить максимальное значение в каждом столбце, используя:

import numpy as np

atoms = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9],
                  [1, 4, 6]])

print(np.amax(atoms, axis=0))

>>> [7 8 9]
print(np.amin(atoms, axis=0))
>>> [1 2 3]

Чтобы назначить его, просто используйте:

x_max, y_max, z_max = np.amax(atoms, axis=0)
x_min, y_min, z_min = np.amin(atoms, axis=0)
...