2016-05-27 4 views
1

Dies ist ein sehr grundlegendes Problem, aber ich habe keine Hinweise darauf gefunden. Lassen Sie uns sagen, dass ich eine 2x4-Matrix haben und ich möchte die Dimension der Matrix nur auf diese Spalten zu reduzieren, die größer als 1 ist in der Summe sind:Auswählen von Spalten/Zeilen einer Matrix in Julia

A=rand(2,4) 
ind = sum(A,1).>1 

dass mich ein Indikator für die Spalten gibt, gebe ich behalten möchte. Naiv würde man annehmen, dass ich das tun kann:

A[:,ind] 

, die nicht als ind funktioniert ist ein BitArray und nur für Bool Arrays dies erlaubt ist, das heißt, die folgenden Werke

A[:,[true,true,false,true]] 

im Gegenzug funktioniert das Folgende:

A[A.>0.5] 

Aber es gibt einen Vektor der gefilterten Elemente zurück. Was ist die Logik dahinter und wie löse ich mein Problem?

+0

Ich fand heraus, dass ich die richtige Matrix mit 'A [:, finde (ind)]' , aber es ist mir unklar, warum es so gemacht werden muss. – Sibylse

+6

Ich nehme an, Sie verwenden Julia 0.3? Dies funktioniert in Julia 0.4.5 (letzter Stall). –

+0

Wahr. Okay, das ist "behoben" .. danke! – Sibylse

Antwort

0

Wie in den Kommentaren erwähnt, wird dies behoben, indem eine Version von Julia verwendet wird, die> = v0.4 ist.