计算化学公社

标题: 求助关于python中norm的使用问题 [打印本页]

作者
Author:
少年爱吃地三鲜    时间: 2021-1-21 22:20
标题: 求助关于python中norm的使用问题
各位老师好, 假如 一个点 在1fs中位移量的计算 , 我是这样想的
0fs 时, 粒子坐标 在a = [29.890001   16.35        0.32999998]
1fs 时, 粒子运动到 b = [29.980001   15.900001    0.29000002]
那么 x1-x2 , y1-y2, z1-z2   可表示为 b - a = [ 9.0000153e-02 -4.4999981e-01 -3.9999962e-02]
然后根据两点间 距离公式 d=√[(x1-x2)^2+(y1-y2)^2+(z1-z2)^2]   可求得位移


此处,  我想用 np.linalg.norm 对 b - a 进行计算  :
           np.linalg.norm((b-a),axis=1,ord = 2,keepdims=True)  为啥不好使呢?  结果为 0.46065155  ,结果不对, 理论上不是一样的吗?  请各位大佬解答
作者
Author:
snljty    时间: 2021-1-21 22:54
你确定这个没报错?一共就1个轴,哪来的axis=1
作者
Author:
少年爱吃地三鲜    时间: 2021-1-21 23:01
snljty 发表于 2021-1-21 22:54
你确定这个没报错?一共就1个轴,哪来的axis=1

我只是取了一个点 ,实际上很多个点, 主要是这个结果为啥是不对的呢?老师
作者
Author:
granvia    时间: 2021-1-21 23:21
直接np.linalg.norm(b-a)不香吗?另外确保a和b都是np.array类型
作者
Author:
snljty    时间: 2021-1-21 23:27
少年爱吃地三鲜 发表于 2021-1-21 23:01
我只是取了一个点 ,实际上很多个点, 主要是这个结果为啥是不对的呢?老师

你看dtype是np.float32还是np.float64。这个结果偏差不大。另外,确认是numpy的ndarray。不要叫老师~
作者
Author:
少年爱吃地三鲜    时间: 2021-1-22 00:18
granvia 发表于 2021-1-21 23:21
直接np.linalg.norm(b-a)不香吗?另外确保a和b都是np.array类型

都是的, 不值得错在哪
作者
Author:
少年爱吃地三鲜    时间: 2021-1-22 00:18
snljty 发表于 2021-1-21 23:27
你看dtype是np.float32还是np.float64。这个结果偏差不大。另外,确认是numpy的ndarray。不要叫老师~

偏差有点大, 正解应该是0.21219985275274666
作者
Author:
snljty    时间: 2021-1-22 00:25
少年爱吃地三鲜 发表于 2021-1-22 00:18
偏差有点大, 正解应该是0.21219985275274666

没开平方吧?
作者
Author:
Freeman    时间: 2021-1-22 00:44
把axis=1改成=0就好了,因为python的编号是从0开始编的。另外python函数里带=的参数都是可选参数,有默认值,不一定要指定,所以按照四楼说的那样写就没问题了。
作者
Author:
少年爱吃地三鲜    时间: 2021-1-22 00:55
snljty 发表于 2021-1-22 00:25
没开平方吧?

我是睿智......
作者
Author:
少年爱吃地三鲜    时间: 2021-1-22 00:55
Freeman 发表于 2021-1-22 00:44
把axis=1改成=0就好了,因为python的编号是从0开始编的。另外python函数里带=的参数都是可选参数,有默认值 ...

解决了  谢谢!




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3