2017-06-19 13 views
0

Ich habe eine symmetrische Matrix und ich bin neugierig, wenn es möglich ist, nur den oberen Dreiecksbereich der Matrix mit np.where zu suchen. Das heißt, gibt es eine Möglichkeit, entweder den unteren dreieckigen Teil der Matrix unter Verwendung einer Schleife oder einer Funktion zu löschen, so dass ich den oberen dreieckigen Teil der Matrix mit np suchen kann.Suche nur einen Teil einer Matrix in Python

+0

Kurze Antwort - ja, es ist möglich. Allerdings glaube ich nicht, dass es einen Weg gibt, Sub-Reihen aus jeder Reihe in der Matrix herauszuziehen, abhängig davon, ob es im oberen Dreieck ist oder nicht, und ich bezweifle, dass es schneller wäre, als die Matrix als Ganzes zu durchsuchen. Was ist das Ziel? Es kann einen anderen Weg geben, um das zu erreichen, was Sie erreichen wollen. –

+0

Ich möchte nur die Variablen auswählen, die einen minimalen Korrelationsschwellenwert erfüllen. Also, wenn ich eine 0,7 Schwellwert und eine Matrix [[1, 0,42, 0,78], [0,42, 1, 0,73], [0,78, 0,73, 1] habe, möchte ich wissen, welche Variablenpaare .7 überschreiten. Also würde ich (var1, var3) und (var2, var3) zurückgeben wollen. Aber wenn ich nur numpy.where, werde ich redundante Paarungen bekommen, wenn das Sinn macht – ij1994

Antwort

1
import numpy as np 

a = np.array([[1 ,0.42, 0.78], [0.42, 1, 0.73], [0.78, 0.73, 1]]) 
# k=1 excludes diagonal correlation is 1 
np.where(np.triu(a > 0.7, k=1)) 
+0

Vielen Dank! – ij1994

Verwandte Themen