Pregunta

I'm using numpy arrays. I'm trying to calculate an array that contains the products of elements spreading out from some center. My code curently looks like this, where psi is a numpy.array():

up=psi[position:position+width]
pre_down=psi[position-width+1:position+1]
down=pre_down[::-1]
ac=up*down

Is there a more elegant, pythonic way to make the array "down"? Something like

down=psi[position:position-width:-1]

doesn't work when position-width is 0.

¿Fue útil?

Solución

When you need to slice down to element 0, you can use None for the end of the slice.

end = position - width - 1 if position > width else None
down = psi[position:end:-1]

Otros consejos

You can use the or keyword to replace the value 0 with None, giving you the base element.

down=psi[position:position-width or None:-1]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top