2016-06-11 5 views
0

I eine numpy Array mit einer N Dimensionen haben, wobei N variieren kann:Index mit einer unbekannten Anzahl von Indizes

arr1 = np.array([0,0,1,0]) 
arr2 = np.array([[0,0],[0,0],[0,1],[0,0]]) 

Ich brauche und die ganze Zahl, dass erhalten zu können, ein Array und Tupel/int passieren Standort zurückgegeben:

assert myfunc(arr1, 2) == 1 
assert myfunc(arr2, (2, 1)) == 1 

ich fühle mich wie dies eine offensichtliche und einfache Antwort hat, die einfach nicht aus irgendeinem Grunde zu klicken ist.

Antwort

3

Ich bin mir nicht sicher, ob ich Ihre Frage richtig verstanden habe; Sie können Tupel jedoch direkt als Index verwenden, um die spezifischen Elemente abzurufen.

Zum Beispiel;

arr1 = np.array([0,0,1,0]) 
arr2 = np.array([[0,0],[0,0],[0,1],[0,0]]) 
arr3 = np.array([[[0,0],[0,0],[0,1],[0,0]], [[0,0],[0,0],[0,1],[0,0]]]) 

assert arr1[2] == 1 
assert arr2[(2, 1)] == 1 
assert arr3[(1,2,1)] == 0 
+0

Das ist, was ich brauchte. Ich wusste nicht, dass ich ein Tupel weitergeben könnte (ich habe nur geschnitten). Ich wusste, es war etwas Einfaches, danke! – Chris

Verwandte Themen