#python-3.x #database #statistics #data-science #histogram
Вопрос:
В принципе, я хочу извлечь среднее количество элементов из системы, степень сгиба которой меньше 45. Для этого я извлекаю свои данные из файлов конфигурации, хранящихся в моих папках. Затем я вычисляю углы (записанные в коде как «анголо»), но на самом деле я не знаю, как извлечь количество элементов из этого угла. В частности, я не знаю, как выделить количество элементов, угол наклона которых меньше 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)
Ответ №1:
Я думаю, это то, чего ты хочешь:
import numpy as np
l = np.array([10,20,30,40,50,60])
l[ l < 45] # returns: array([10, 20, 30, 40])
l < 45
вернет список такой длины, как l
и True
где элемент меньше 45, а в противном случае значение False, которое затем можно использовать для выбора значений из исходного массива.
Или вам просто нужно, чтобы граф np.count_nonzero( l < 45)
сделал свое дело.
Комментарии:
1. Первая альтернатива была на самом деле лучшей. Метод count_nonzero только что добавил список единиц. Очень признателен
2. @Zikan Добро пожаловать! Если вас устраивает ответ, вы можете отметить его принятым!