0
정규화 된 배열에서 X 및 Y 값에 액세스하고 있습니다. 하지만 for 루프를 사용하여 정규화 된 배열의 모든 빈에 방정식을 적용하는 동안 0으로 값을 제외하고 싶습니다. 0 값으로 오류가 발생합니다. true_divide에서 발생하는 0으로 RuntimeWarning을 나누기 : RuntimeWarning을 : 나는)합니다 ((SECURITY) 기능을 비활성화를 인쇄 할 때정규화 된 배열에 액세스하고 for 루프에서 0 값 제외
normed = array([[ 0.0003, 0.0026, 0.0149, 0.0288, 0.0328, 0.0174, 0.0036,
0.0004, 0. , 0. ],
[ 0.0001, 0.0024, 0.0103, 0.0244, 0.0321, 0.0211, 0.0064,
0.0006, 0. , 0. ],
[ 0.0003, 0.0012, 0.0072, 0.0235, 0.0325, 0.0246, 0.0079,
0.0012, 0. , 0. ],
[ 0. , 0.0008, 0.0065, 0.0182, 0.0346, 0.0274, 0.0124,
0.002 , 0.0004, 0. ],
[ 0. , 0.0005, 0.0033, 0.0155, 0.0302, 0.0327, 0.0153,
0.0032, 0.0003, 0. ],
[ 0. , 0.0002, 0.0025, 0.0121, 0.0283, 0.0342, 0.0184,
0.0054, 0.0004, 0. ],
[ 0. , 0.0001, 0.0016, 0.008 , 0.0253, 0.0318, 0.0219,
0.0084, 0.001 , 0.0002],
[ 0. , 0. , 0.0008, 0.0056, 0.0198, 0.0316, 0.0296,
0.0108, 0.0018, 0.0002],
[ 0. , 0.0001, 0.0007, 0.0035, 0.0169, 0.0329, 0.0318,
0.0163, 0.0039, 0.0006],
[ 0. , 0. , 0.0001, 0.0022, 0.0107, 0.0253, 0.0329,
0.0171, 0.004 , 0.0011]])
Px = normed.sum(axis=0)
array([ 0.0007, 0.0079, 0.0479, 0.1418, 0.2632, 0.279 , 0.1802,
0.0654, 0.0118, 0.0021])
def funct():
CEnt = 0
for i in range(0,10):
if i > 0:
for j in range(0,10):
if j > 0:
CEnt += normed[i][j]*np.log2(Px/(normed[i][j]))
return CEnt
, 나는 오류가있는 [유모 유모 유모 유모 유모 유모 유모 유모 유모 유모]를 얻을 곱셈
에서 발생하는 잘못된 값0 값을 제외하는 동안 CEnt 방정식을 사용하여 배열의 100 개의 저장소를 루프하는 for 루프를 작성하려면 어떻게해야합니까? 대단히 감사합니다 ....
그러나 'NORMED에 대한 I'I 코드 경우. 그것은 내 배열의 모든 값을 i로 만드나요? 나머지 값은 j 인 동안 0을 골라냅니다. 그래서 방정식을 0을 제외한 모든 값에 적용 할 것입니다,하지만 방정식을 표준 [i] [j] 빈에 적용하지 않습니까? 또는 모든 가치 = 규범 [i] [j]입니까? 죄송합니다, 저는 파이썬에서 초보자입니다.하지만 어떻게 든 복잡한 것에 서명을하지 않았습니다 ... – Hotaru
'for i in normed'는 배열의'normed' 행을 반복합니다. 모든 반복에서 'i'는 10 개의 값으로 구성됩니다. 'for j in i'는 그 값들을 반복합니다. 따라서'j'는 코드에서'normed [i] [j]'와 같습니다. 대답을 명확하게하기 위해 변수의 이름을 변경했습니다. – surt91