Consideremos el siguiente código numpy
:numpy: booleano indexación y el uso de memoria
A[start:end] = B[mask]
aquí:
A
yB
son matrices 2D con el mismo número de columnas;start
yend
son escalares;mask
es una matriz booleana 1D;(end - start) == sum(mask)
.
En principio, la operación anterior se puede llevar a cabo utilizando O(1)
almacenamiento temporal, copiando elementos de B
directamente en A
.
¿Esto es realmente lo que sucede en la práctica, o numpy
construye una matriz temporal para B[mask]
? Si es este último, ¿hay alguna forma de evitar esto reescribiendo el enunciado?
+1 para traer Cython. Es este tipo de bucles que sobresale en. –