Tengo un código escrito en Python similar a la siguiente:

def adamic_adar_prediction(graph):
    adjacencyMatrix = graph.get_adjacency()
    AAMatrix = adamic_adar_score(graph)
    AAMatrix  = np.array(AAMatrix)
    i = (-AAMatrix ).argsort(axis=None, kind='mergesort')
    j = np.unravel_index(i, AAMatrix .shape)
    sortedList = np.vstack(j).T
    print(sortedList.size)

    print(sortedList[1658943])
    print(sortedList[1658945])

Mientras que el resultado de la primera impresión es 3,316,888 recibo el siguiente error para la última impresión:

IndexError: index 1658944 is out of bounds for axis 0 with size 1658944

Alguna idea de por qué este error surge de mi matriz?

  • Uso print(sortedList[1658943]) lugar.
  • Podría proporcionar el código exacto? Cómo ‘similares’ es este código?
InformationsquelleAutor ahajib | 2015-04-20

3 Comentarios

  1. 2

    Usted no tiene suficientes elementos en su array, por ejemplo:

    In [5]: import numpy as np
    
    In [6]: a = np.array([1,2])
    
    In [8]: a[2] # there is no element at 2nd index
    ---------------------------------------------------------------------------
    IndexError                                Traceback (most recent call last)
    <ipython-input-8-016a87a854bc> in <module>()
    ----> 1 a[2]
    
    IndexError: index 2 is out of bounds for axis 0 with size 2
    • Pero como he mencionado, el tamaño de mi numpy matriz es 3,317,888 !
    • estás seguro? El mensaje de error que dice lo contrario, y 3,316,888 parece ser de valor en el índice 1658943.
    • Absolutamente. El valor en 1658943 es [1286 1287].
    • Veo, en tus preguntas tratando de obtener valores en 1658943 y 1658945, pero el mensaje de error se muestra 1658944, así que parece que no son en realidad la ejecución de dicho código. Por desgracia, yo no puedo ayudar mucho más que esto, pero para mí se siente como una tonta mezcla en algún lugar.
  2. 2

    Considerando qué misterioso es su problema, me gustaría seguir adelante y probar esto con un try/except bucle para asegurarse de que el código va más allá de ese punto y sólo está teniendo problemas en el índice 1658944…

    algo como:

    for x in range(sortedList.size):
        try:
            sortedList[x]
        except:
            print "no index at", x

    Informar lo que los resultados son.

  3. 1

    Gracias por todos los comentarios. Pensé que mi problema es que sortedList.tamaño devuelve el número total de elementos en el array, mientras esperaba que el número de tuplas en mi matriz (desde sortedList es una lista de tuplas [[],[],…]). Así que he resuelto mi problema con sortedList.shape

Dejar respuesta

Please enter your comment!
Please enter your name here