2016-04-11 6 views
2

Ich bin Matlab/Octave Benutzer. Numpy Dokumentation sagt, die ist viel besser zu verwenden als matrix. Gibt es eine bequeme Möglichkeit, mit Rang-1-Arrays umzugehen, ohne sie ständig neu zu gestalten?Numpy Rang 1 Arrays

Beispiel:

data = np.loadtxt("ex1data1.txt", usecols=(0,1), delimiter=',',dtype=None) 
X = data[:, 0] 
y = data[:, 1] 
m = len(y) 

print X.shape, y.shape 
>>> (97L,) (97L,) 

I neue Spalte X nicht hinzufügen kann mit concatenate, vstack, append, außer np.c_, die langsamer ist, ohne Umformung X:

X = np.concatenate((np.ones((m, 1)), X), axis = 1) 
>>> ValueError: all the input arrays must have same number of dimensions 

X - Y, nicht möglich ohne Umformung y np.reshape(y, (-1, 1))

+0

ist diese Frage über die Verkettung oder über Rang 1 Arrays im Allgemeinen? – MSeifert

+0

Ich denke über Rank-1-Arrays im Allgemeinen nach. – NeuroMonk

+0

Ich benutze Ausdrücke wie 'np.arange (10) .reshape (2,5)' die ganze Zeit. – hpaulj

Antwort

2

Ein einfacheres Äquivalent zu np.reshape(y, (-1, 1)) ist y[:, np.newaxis]. Da np.newaxis ein Alias ​​für None ist, funktioniert auch y[:, None]. Erwähnenswert ist auch np.expand_dims(y, axis=1).