Tengo una matriz de 4 dimensiones, es decir, data.shape = (20,30,33,288)
. Estoy encontrando el índice de la matriz más cerca de n usandoUsando numpy.argmax() en matrices multidimensionales
index = abs(data - n).argmin(axis = 1), so
index.shape = (20,33,288) with the indices varying.
me gustaría utilizar data[index] = "values"
con values.shape = (20,33,288)
, pero data[index]
devuelve el error "índice (8) fuera de rango (0 < = índice < 1) en la dimensión 0 " o esta operación lleva un tiempo relativamente largo para calcular y devuelve una matriz con una forma que no parece tener sentido.
¿Cómo devuelvo una matriz de valores correctos? es decir,
data[index] = "values" with values.shape = (20,33,288)
Parece un problema simple, ¿hay una respuesta simple?
Al final me gustaría encontrar index2 = abs(data - n2).argmin(axis = 1)
, por lo que puedo realizar una operación, decir datos de suma en el índice de datos en index2 sin recorrer las variables. es posible?
Estoy usando python2.7 y numpy versión 1.5.1.
¿También hay una respuesta cuando uno no conoce el ndim? –
@AndreasMueller: Sí, use 'tup [: axis] + (index,) + tup [axis:]' como índice para 'data', donde' tup' es la tupla devuelta por 'numpy.indices()'. –