查找三维numpy数组的y坐标的最大值和最小值

0 人关注

我是一个完全的Python初学者,正试图用它来生成一个合并的数据文件,以用于分子模拟。

我试图使用ASE的python代码将一组原子沿y轴放在另一组原子之上。为此,我需要找到存储为三维数组(atoms_1)的一组原子的最小y坐标和存储为三维数组(atoms_2)的第二组原子的最大y坐标。哪种方法是最好的?

我已经试过了。

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

不确定语法是否正确。希望得到任何帮助或提示。

2 个评论
我想 np.amax 可能是你要找的东西。 docs.scipy.org/doc/numpy/reference/generated/numpy.amax.html
@Nathan np.max is an alias for np.amax
python
arrays
numpy
max
min
abhay vincent
abhay vincent
发布于 2020-05-08
3 个回答
Ehsan
Ehsan
发布于 2020-05-08
已采纳
0 人赞同

你所做的似乎是正确的。你也可以去掉托架。

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

np.max是评论中建议的np.amax的别名。

Nathan
Nathan
发布于 2020-05-08
0 人赞同

你可以用以下方法得到每一列的最大值。

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)
    
Quang Hoang
Quang Hoang
发布于 2020-05-08
0 人赞同

你也可以将轴线传入 max min

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

Output:

(array([[ 6,  7,  8],
        [15, 16, 17],