2016-04-11 4 views
2

Я - пользователь Matlab/Octave. В документации по номеру более целесообразно использовать array, а не matrix. Есть ли удобный способ справиться с массивами ранга 1, не изменяя его постоянно?Numpy rank 1 arrays

Пример:

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,) 

Я не могу добавить новый столбец в X с использованием concatenate, vstack, append, за исключением np.c_, который медленнее, без изменения формы X:

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

Х - у, не может быть выполнено без изменения y np.reshape(y, (-1, 1))

+0

Этот вопрос касается конкатенации или около 1 ранга 1 в целом? – MSeifert

+0

Я думаю о рангах 1-го уровня в целом. – NeuroMonk

+0

Я использую выражения типа 'np.arange (10) .reshape (2,5)' все время. – hpaulj

ответ

2

Простой эквивалент np.reshape(y, (-1, 1)) - y[:, np.newaxis]. Поскольку np.newaxis является псевдонимом для None, также работает y[:, None]. Также стоит упомянуть np.expand_dims(y, axis=1).