Numpy: Это самый эффективный способ добавить столбец единиц в одномерный вектор? - PullRequest
0 голосов
/ 26 апреля 2020

В моем скрипте Python я загружаю одномерный вектор из файла .dat. Я хочу использовать этот вектор в качестве первого столбца в матрице, где второй столбец заполнен 1 с. Вот как я это сделал:

x = np.loadtxt( 'x.dat' )
m = x.shape[0]
X = np.concatenate((x.reshape((m,1)), np.ones((m,1))), axis=1)

Есть ли более эффективный способ добиться этого?

1 Ответ

1 голос
/ 26 апреля 2020

Это выглядит вполне разумно для меня. Если вы сильно ограничиваетесь в производительности, попробуйте следующее:

X = np.ones((m, 2))
X[:,0] = x

или:

X = np.empty((m, 2))
X[:,0] = x
X[:,1] = 1

Я не удивлюсь, если они будут медленнее.

Однако я ожидаю, что большая часть вашей производительности не будет потеряна при добавлении дополнительного столбца, а вместо этого при np.loadtxt. Попробуйте изменить формат данных на np.save / np.load, что намного быстрее.

...