Я пытаюсь сделать так, чтобы индекс «все 1» в словаре не возвращал 0 при делении, чтобы при обработке он не возвращал double_scalars.
Это для классификатора блока, который определяетРазмеры ящиков основаны на следующих параметрах:
https://imgur.com/a/1eSyM2o (Извините, репутация меньше 10).
Ancho = Ширина
Альт = Высота
Largo = длина
Tamaño de la caja = размер коробки
Chico = маленький
Mediano = средний
Grande = большой
Я выделил только те значения, которые дают мне вывод double_scalar:
import numpy as np
import pandas as pd
dicci = {'W1':[0,1,0,1,1,1],
'W0':[1,0,1,0,1,1],
'H0':[1,1,1,1,1,1],
'L0':[1,1,1,1,1,1],}
df = pd.DataFrame(dicci)
PW10 = df['W1'][df['W1']==0].count()/df['W1'].count()
PW11 = df['W1'][df['W1']==1].count()/df['W1'].count()
PW00 = df['W0'][df['W0']==0].count()/df['W0'].count()
PW01 = df['W0'][df['W0']==1].count()/df['W0'].count()
PH00 = df['H0'][df['H0']==0].count()/df['H0'].count()
PL00 = df['L0'][df['L0']==0].count()/df['L0'].count()
PH01 = df['H0'][df['H0']==1].count()/df['H0'].count()
PL01 = df['L0'][df['L0']==1].count()/df['L0'].count()
print("PW10: ",PW10)
print("PW11: ",PW11)
print("PW00: ",PW00)
print("PW01: ",PW01)
print("PH00: ",PH00)
print("PL00: ",PL00)
print("PH01: ",PH01)
print("PL01: ",PL01)
#W1
#------------------------------------------------------------------------------
#W1,L0
PW10L00 = ((((df['W1'][(df['W1']==0)&(df['L0']==0)].count()/df['L0'].count())**2)/
(PW10*PL00)))
PW11L00 = ((((df['W1'][(df['W1']==1)&(df['L0']==0)].count()/df['L0'].count())**2)/
(PW11*PL00)))
PW10L01 = ((((df['W1'][(df['W1']==0)&(df['L0']==1)].count()/df['L0'].count())**2)/
(PW10*PL01)))
PW11L01 = ((((df['W1'][(df['W1']==1)&(df['L0']==1)].count()/df['L0'].count())**2)/
(PW11*PL01)))
PW1L0 = PW10L00 + PW11L00 + PW10L01 + PW11L01
#W1,H0
PW10H00 = ((((df['W1'][(df['W1']==0)&(df['H0']==0)].count()/df['H0'].count())**2)/
(PW10*PH00)))
PW11H00 = ((((df['W1'][(df['W1']==1)&(df['H0']==0)].count()/df['H0'].count())**2)/
(PW11*PH00)))
PW10H01 = ((((df['W1'][(df['W1']==0)&(df['H0']==1)].count()/df['H0'].count())**2)/
(PW10*PH01)))
PW11H01 = ((((df['W1'][(df['W1']==1)&(df['H0']==1)].count()/df['H0'].count())**2)/
(PW11*PH01)))
PW1H0 = PW10H00 + PW11H00 + PW10H01 + PW11H01
#W0
#-------------------------------------------------------------------------------
#W0,L0
PW00L00 = ((((df['W0'][(df['W0']==0)&(df['L0']==0)].count()/df['L0'].count())**2)/
(PW00*PL00)))
PW01L00 = ((((df['W0'][(df['W0']==1)&(df['L0']==0)].count()/df['L0'].count())**2)/
(PW01*PL00)))
PW00L01 = ((((df['W0'][(df['W0']==0)&(df['L0']==1)].count()/df['L0'].count())**2)/
(PW00*PL01)))
PW01L01 = ((((df['W0'][(df['W0']==1)&(df['L0']==1)].count()/df['L0'].count())**2)/
(PW01*PL01)))
PW0L0 = PW00L00 + PW01L00 + PW00L01 + PW01L01
#W0,H0
PW00H00 = ((((df['W0'][(df['W0']==0)&(df['H0']==0)].count()/df['H0'].count())**2)/
(PW00*PH00)))
PW01H00 = ((((df['W0'][(df['W0']==1)&(df['H0']==0)].count()/df['H0'].count())**2)/
(PW01*PH00)))
PW00H01 = ((((df['W0'][(df['W0']==0)&(df['H0']==1)].count()/df['H0'].count())**2)/
(PW00*PH01)))
PW01H01 = ((((df['W0'][(df['W0']==1)&(df['H0']==1)].count()/df['H0'].count())**2)/
(PW01*PH01)))
PW0H0 = PW00H00 + PW01H00 + PW00H01 + PW01H01
print(np.isnan(PW1L0))
print(np.isnan(PW0L0))
print(np.isnan(PW1H0))
print(np.isnan(PW0H0))
Я хочу знать, как я могу сделать так, чтобы значения, которые возвращают 0 на первом месте, не округлялись до 0,поэтому после обработки я могу округлить их до 1 или 0 с помощью функции и, таким образом, сначала не иметь дело с double_scalar.
Это вывод кода.
PW10: 0.3333333333333333
PW11: 0.6666666666666666
PW00: 0.3333333333333333
PW01: 0.6666666666666666
PH00: 0.0
PL00: 0.0
PH01: 1.0
PL01: 1.0
Warning (from warnings module):
File "C:\Users\USER\Desktop\MAtl\H00&L00.py", line 34
(PW10*PL00)))
RuntimeWarning: invalid value encountered in double_scalars
Warning (from warnings module):
File "C:\Users\USER\Desktop\MAtl\H00&L00.py", line 37
(PW11*PL00)))
RuntimeWarning: invalid value encountered in double_scalars
Warning (from warnings module):
File "C:\Users\USER\Desktop\MAtl\H00&L00.py", line 48
(PW10*PH00)))
RuntimeWarning: invalid value encountered in double_scalars
Warning (from warnings module):
File "C:\Users\USER\Desktop\MAtl\H00&L00.py", line 51
(PW11*PH00)))
RuntimeWarning: invalid value encountered in double_scalars
Warning (from warnings module):
File "C:\Users\USER\Desktop\MAtl\H00&L00.py", line 65
(PW00*PL00)))
RuntimeWarning: invalid value encountered in double_scalars
Warning (from warnings module):
File "C:\Users\USER\Desktop\MAtl\H00&L00.py", line 68
(PW01*PL00)))
RuntimeWarning: invalid value encountered in double_scalars
Warning (from warnings module):
File "C:\Users\USER\Desktop\MAtl\H00&L00.py", line 79
(PW00*PH00)))
RuntimeWarning: invalid value encountered in double_scalars
Warning (from warnings module):
File "C:\Users\USER\Desktop\MAtl\H00&L00.py", line 82
(PW01*PH00)))
RuntimeWarning: invalid value encountered in double_scalars
True
True
True
True
Я пыталсяреализовать функцию в первую очередь, где, если любой из первых параметров дает мне 0 'тогда они просто равны 1, но я не уверен, что это правильное решение в долгосрочной перспективе.