/ / Creando una matriz de dimensión X por Y de (a, b) puntos en Python 2.7 - python, arrays, numpy

Creación de una matriz de dimensiones X por Y de (a, b) puntos en Python 2.7 - python, arrays, numpy

¡He estado extrañamente golpeando mi cabeza contra este problema durante varias horas, y agradecería cualquier ayuda!

Me gustaría crear una matriz (por ejemplo) de 100x100 en la que cada índice sea un (x,y) coordinar. El objetivo general aquí es el siguiente:

Tengo coordenadas x, y, y me gustaría organizarlas en un espacio 2D para que pueda usar el np.diagonal función para devolver el (x,y) coordenadas a lo largo de una línea. Yo entonces usaré esos (x,y) Puntos para comparar valores particulares.

El primer paso aquí es, en realidad, crear la matriz y parece que no puedo hacerlo.

Respuestas

1 para la respuesta № 1

Si solo desea los valores a lo largo de la diagonal, ¿por qué no crea una lista 1D?

import numpy as np
xs = np.linspace(1,10,100) # assuming x goes form 1 to 10
ys = np.linspace(2,3, 100) # assuming y goes from 2 to 3
xy = zip(xs, ys)

Ya no necesitas la matriz 2d y luego llamas a la diagonal.


1 para la respuesta № 2

Trabajando en la sugerencia de Jaime:

>>> x, y = numpy.mgrid[0:100, 0:100]
>>> z = numpy.array([x, y]).transpose([1,2,0])
>>> z[50, 2]
array([50,  2])

EDITAR: Dada una serie de puntos p, de la forma (2, P), esta es la forma en que descubriría cuáles de estos puntos están debajo de la diagonal n:

>>> d = numpy.diagonal(z, n)
>>> cond0 = p[0, None] < d[0, :, None]
>>> cond1 = p[1, None] < d[1, :, None]
>>> good_indices_full = numpy.where(numpy.logical_and(cond0, cond1))
>>> good_indices = good_indices_full[1]

(Prefiero trabajar con "good_indices", es decir, escribir cosas como p [:, good_indices], en lugar de la tupla completa de matrices que numpy.where devuelve).


0 para la respuesta № 3

No estoy seguro de la parte numpy de su solicitud, pero puede crear la matriz de esta manera:

coords = [[(y,x) for x in range(100)] for y in range(100)]
>>> coords[50][2]
(50,2)