如何从 Python3 中的度数列表中找到元素的数量?
How can I find the number of elements from a list of degrees in Python3?
基本上,我想从折叠度小于 45 的系统中提取平均元素数。为此,我从存放在文件夹中的配置文件中提取数据。然后,我计算角度(在代码中写为“angolo”)但实际上我不知道如何从该角度提取元素的数量。特别是,我不知道如何隔离角度小于 45 度的元素数量。
有谁知道 python3 函数或脚本来查找这些数字?
import sys,os
import numpy as np
fn='listadir.txt' # <=== lista_dir
with open(fn,'r') as f:
lines=f.readlines()
for l in lines:
os.chdir('C:\Users\simone\anaconda3\Ex_Files_Python_Statistics_EssT\' + l.strip('\n'))
os.system('dir /b cnf-* > listacnf.txt')
with open('listacnf.txt','r') as f:
linescnf=f.readlines()
Q=np.matrix([[0.0,0.0,0.0],[0.0,0.0,0.0],[0.0,0.0,0.0]])
cc = 1
for ll in linescnf:
#print('ll=', ll)
with open(ll.strip('\n')) as ff:
cnft=ff.readlines()
cnf=cnft[1:]
for lc in cnf:
lv = lc.strip('\n').split()
#print('lc =', lc)
ux = float(lv[3])
uy = float(lv[4])
uz = float(lv[5])
Qxx = ux*ux
Qxy = ux*uy
Qxz = ux*uz
Qyx = uy*ux
Qyy = uy*uy
Qyz = uy*uz
Qzx = uz*ux
Qzy = uz*uy
Qzz = uz*uz
Q += np.matrix([[Qxx, Qxy, Qxz],[Qyx, Qyy, Qyz],[Qzx,Qzy, Qzz]])
cc += 1
angolo = np.arccos(ux*uy*uz)
#print(ux)
#....
Q = Q/cc
# ....
os.chdir('..')
#print(l.strip('\n'))
N= 1000
mediangolo = angolo.mean()
frazione = mediangolo/N
print('frazione=', mediangolo)
我想这就是你想要的:
import numpy as np
l = np.array([10,20,30,40,50,60])
l[ l < 45] # returns: array([10, 20, 30, 40])
l < 45
将 return 与 l
和 True
一样长的列表,其中元素小于 45 和 False 否则你可以使用它select 来自原始数组的值。
或者您只需要计数 np.count_nonzero( l < 45)
就可以了。
基本上,我想从折叠度小于 45 的系统中提取平均元素数。为此,我从存放在文件夹中的配置文件中提取数据。然后,我计算角度(在代码中写为“angolo”)但实际上我不知道如何从该角度提取元素的数量。特别是,我不知道如何隔离角度小于 45 度的元素数量。 有谁知道 python3 函数或脚本来查找这些数字?
import sys,os
import numpy as np
fn='listadir.txt' # <=== lista_dir
with open(fn,'r') as f:
lines=f.readlines()
for l in lines:
os.chdir('C:\Users\simone\anaconda3\Ex_Files_Python_Statistics_EssT\' + l.strip('\n'))
os.system('dir /b cnf-* > listacnf.txt')
with open('listacnf.txt','r') as f:
linescnf=f.readlines()
Q=np.matrix([[0.0,0.0,0.0],[0.0,0.0,0.0],[0.0,0.0,0.0]])
cc = 1
for ll in linescnf:
#print('ll=', ll)
with open(ll.strip('\n')) as ff:
cnft=ff.readlines()
cnf=cnft[1:]
for lc in cnf:
lv = lc.strip('\n').split()
#print('lc =', lc)
ux = float(lv[3])
uy = float(lv[4])
uz = float(lv[5])
Qxx = ux*ux
Qxy = ux*uy
Qxz = ux*uz
Qyx = uy*ux
Qyy = uy*uy
Qyz = uy*uz
Qzx = uz*ux
Qzy = uz*uy
Qzz = uz*uz
Q += np.matrix([[Qxx, Qxy, Qxz],[Qyx, Qyy, Qyz],[Qzx,Qzy, Qzz]])
cc += 1
angolo = np.arccos(ux*uy*uz)
#print(ux)
#....
Q = Q/cc
# ....
os.chdir('..')
#print(l.strip('\n'))
N= 1000
mediangolo = angolo.mean()
frazione = mediangolo/N
print('frazione=', mediangolo)
我想这就是你想要的:
import numpy as np
l = np.array([10,20,30,40,50,60])
l[ l < 45] # returns: array([10, 20, 30, 40])
l < 45
将 return 与 l
和 True
一样长的列表,其中元素小于 45 和 False 否则你可以使用它select 来自原始数组的值。
或者您只需要计数 np.count_nonzero( l < 45)
就可以了。