Mam tablicę takiego: tmp.shape = (128, 64, 64)
dodać tylko wartość, jeśli wartość jest większa od zera w Pythonie wielowymiarowej tablicy
Liczę wszystkie zera wzdłuż osi 128
tak:
nonzeros = np.count_nonzero(tmp, axis=0) // shape = (64, 64)
Mam tablicowej c.shape = (64, 64)
teraz chcę dodać wartości od C do tmp wzdłuż osi 128, ale tylko wtedy, gdy wartości są tmp> 0:
for i in range(tmp.shape[0]):
axis1 = tmp[i,:,:]
tmp[i, :, :] += (c/nonzeros) // only if tmp[i, :, :] > 0
Czy można to zrobić w krótkim czasie? Czy muszę używać wielu pętli? Mam nadzieję, że ktoś może zaproponować rozwiązanie bez innej pętli
Coś jak to nie działa:
tmp[i, tmp > 0.0, tmp > 0.0] += (c/nonzeros)
IndexError: too many indices for array
wersja długa
for i in range(tmp.shape[0]):
for x in range(tmp.shape[1]):
for y in range(tmp.shape[2]):
pixel = tmp[i, x, y]
if pixel != 0:
pixel += (c[x,y]/nonzeros[x,y])
Czy którykolwiek z zamieszczonymi rozwiązań pracować dla Ciebie? – Divakar
Tak, przepraszam, byłem ostatnio bardzo zajęty, więc nie odpowiedziałem od razu. – thigi