Agregando una dimensión a cada elemento de un Numpy.Array -- python campo con arrays campo con numpy camp Relacionados El problema

Adding a dimension to every element of a numpy.array


5
vote

problema

Español

Estoy tratando de transformar cada elemento de una matriz adorable en una matriz en sí (digamos, para interpretar una imagen de escala de grises como una imagen en color). En otras palabras:

  >>> my_ar = numpy.array((0,5,10)) [0, 5, 10] >>> transformed = my_fun(my_ar)  # In reality, my_fun() would do something more useful array([       [ 0,  0, 0],        [ 5, 10, 15],        [10, 20, 30]]) >>> transformed.shape (3, 3)   

He intentado:

  page0  

pero obtén:

  page111  

y lo he intentado:

  page2  

pero obtén:

  page3  

Esto está cerca, pero no muy bien, recibo una matriz de objetos, no una matriz de ints.

Actualización 3! OK. Me he dado cuenta de que mi ejemplo era demasiado simple de antemano: no solo quiero replicar mis datos en una tercera dimensión, me gustaría transformarlo al mismo tiempo. Tal vez esto sea más claro?

Original en ingles

I'm trying to transform each element of a numpy array into an array itself (say, to interpret a greyscale image as a color image). In other words:

>>> my_ar = numpy.array((0,5,10)) [0, 5, 10] >>> transformed = my_fun(my_ar)  # In reality, my_fun() would do something more useful array([       [ 0,  0, 0],        [ 5, 10, 15],        [10, 20, 30]]) >>> transformed.shape (3, 3) 

I've tried:

def my_fun_e(val):     return numpy.array((val, val*2, val*3))  my_fun = numpy.frompyfunc(my_fun_e, 1, 3) 

but get:

my_fun(my_ar) (array([[0 0 0], [ 5 10 15], [10 20 30]], dtype=object), array([None, None, None], dtype=object), array([None, None, None], dtype=object)) 

and I've tried:

my_fun = numpy.frompyfunc(my_fun_e, 1, 1) 

but get:

>>> my_fun(my_ar) array([[0 0 0], [ 5 10 15], [10 20 30]], dtype=object) 

This is close, but not quite right -- I get an array of objects, not an array of ints.

Update 3! OK. I've realized that my example was too simple beforehand -- I don't just want to replicate my data in a third dimension, I'd like to transform it at the same time. Maybe this is clearer?

        

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

Utilice el mapa para aplicar su función de transformación a cada elemento en MY_AR:

  import numpy  my_ar = numpy.array((0,5,10)) print my_ar  transformed = numpy.array(map(lambda x:numpy.array((x,x*2,x*3)), my_ar)) print transformed  print transformed.shape   
 

Use map to apply your transformation function to each element in my_ar:

import numpy  my_ar = numpy.array((0,5,10)) print my_ar  transformed = numpy.array(map(lambda x:numpy.array((x,x*2,x*3)), my_ar)) print transformed  print transformed.shape 
 
 
7
 
vote

¿Numpy.dstack hace lo que quieres? Los dos primeros índices son los mismos que la matriz original, y el nuevo tercer índice es "Profundidad".

  >>> import numpy as N >>> a = N.array([[1,2,3],[4,5,6],[7,8,9]]) >>> a array([[1, 2, 3],        [4, 5, 6],        [7, 8, 9]]) >>> b = N.dstack((a,a,a)) >>> b array([[[1, 1, 1],         [2, 2, 2],         [3, 3, 3]],         [[4, 4, 4],         [5, 5, 5],         [6, 6, 6]],         [[7, 7, 7],         [8, 8, 8],         [9, 9, 9]]]) >>> b[1,1] array([5, 5, 5])   
 

Does numpy.dstack do what you want? The first two indexes are the same as the original array, and the new third index is "depth".

>>> import numpy as N >>> a = N.array([[1,2,3],[4,5,6],[7,8,9]]) >>> a array([[1, 2, 3],        [4, 5, 6],        [7, 8, 9]]) >>> b = N.dstack((a,a,a)) >>> b array([[[1, 1, 1],         [2, 2, 2],         [3, 3, 3]],         [[4, 4, 4],         [5, 5, 5],         [6, 6, 6]],         [[7, 7, 7],         [8, 8, 8],         [9, 9, 9]]]) >>> b[1,1] array([5, 5, 5]) 
 
 
 
 
1
 
vote

Propongo:

   numpy.resize(my_ar, (3,3)).transpose()   

Puede, por supuesto, adaptar la forma q=about0 o lo que sea

 

I propose:

 numpy.resize(my_ar, (3,3)).transpose() 

You can of course adapt the shape (my_ar.shape[0],)*2 or whatever

 
 
1
 
vote

¿Hace esto lo que desea:

  q=about111  
 

Does this do what you want:

tile(my_ar, (1,1,3)) 
 
 

Relacionados problema

0  Lógica de bucle para calcular% cambio  ( Loop logic to calculate change ) 
MI FREAFAME: A B C A_Q B_Q C_Q 27 40 41 2 1 etc 28 39 40 1 5 30 28 29 3 6 28 27 28 4 1 15 10 ...

1  Cómo hacer que la carga nombrada sea más rápida  ( How to make numpy load faster ) 
Me gustaría usar NOMPY para hacer que mi programa sea más rápido. La única parte que quiero usar es matrices de cadena. Cuando hago childInRed->setParentIt...

1  Clasificación de valores eigen en Python en For-Loop  ( Sorting of eigenvalues in python in for loop ) 
Estoy calculando y trazando los valores propios de una matriz 5x5 en función de un parámetro X. Sé que tengo que ordenar los valores propios, ya que no están ...

0  Usando una columna en .txt para cálculo  ( Using a column in txt for calculation ) 
Tengo un archivo de texto con 5 columnas y 36 filas. Quiero elegir una columna específica y la use en un cálculo. Datos de muestra: #1 2 3...

8  Añadir la tasa de cambio a Pandas DataFrame  ( Add rate of change to pandas dataframe ) 
Tengo el siguiente fábrico de datos de Pandas: lastrun value 0 2013-10-24 13:10:05+00:00 55376 1 2013-...

1  Obtenga elementos específicos de NDARRAY de NDARrays con forma (n,)  ( Get specific elements from ndarray of ndarrays with shape n ) 
Dado el NDARRAY: A = np.array([np.array([1], dtype='f'), np.array([2, 3], dtype='f'), np.array([4, 5], dtype='f'), ...

0  PIPLOT DE CRESCAS DE ARRAY  ( Pyplot of array crashes ) 
Estoy intentando trazar valores de matriz obtenidos de sumar columnas individuales de una matriz NUTPY. Trabajando en Win XP, Python 2.5, MatPlotlib-1.0.1, Nu...

-2  Levantar ioError ("% s no encontrado".% ruta)  ( Raise ioerrors not found path ) 
En la semana pasada, pasé mi tiempo tratando de resolver un gran problema al compilar mi programa.py. Mi script del programa es: "message": "Query key con...

-1  Scipy Solver devuelve un error / ¿Cómo usar Numpy.Seterr?  ( Scipy solver returns an error how to use numpy seterr ) 
¿Cómo puedo entender qué causa este error? RuntimeWarning: invalid value encountered in double_scalars and dx_norm/self.x_rtol <= x_norm)) Realmente no...

8  Calcule la media en los valores en las colecciones de Python.Counter  ( Calculate mean on values in python collections counter ) 
Estoy perfilando algunas mediciones de tiempo numérico que se agrupan extremadamente de cerca. Me gustaría obtener una media, desviación estándar, etc. Alguna...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos