Saltar al contenido

Cómo “escalar” un numpy array?

La guía o código que verás en este post es la solución más eficiente y válida que hallamos a esta duda o problema.

Solución:

Debe utilizar el producto de Kronecker, numpy.kron:

Calcula el producto de Kronecker, un compuesto array hecho de bloques de la segunda array escalado por el primero

import numpy as np
a = np.array([[1, 1],
              [0, 1]])
n = 2
np.kron(a, np.ones((n,n)))

que da lo que quieres:

array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [0, 0, 1, 1],
       [0, 0, 1, 1]])

podrías usar repeat:

In [6]: a.repeat(2,axis=0).repeat(2,axis=1)
Out[6]: 
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [0, 0, 1, 1],
       [0, 0, 1, 1]])

No estoy seguro de si hay una forma clara de combinar las dos operaciones en una sola.

scipy.misc.imresize puede escalar imágenes. También se puede usar para escalar matrices numpy:

#!/usr/bin/env python

import numpy as np
import scipy.misc

def scale_array(x, new_size):
    min_el = np.min(x)
    max_el = np.max(x)
    y = scipy.misc.imresize(x, new_size, mode='L', interp='nearest')
    y = y / 255 * (max_el - min_el) + min_el
    return y

x = np.array([[1, 1],
              [0, 1]])
n = 2
new_size = n * np.array(x.shape)
y = scale_array(x, new_size)
print(y)

Aquí puedes ver las comentarios y valoraciones de los usuarios

Puedes sustentar nuestra investigación exponiendo un comentario o dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *