Добавление массивов numpy по столбцу [дубликат]

Спасибо, LSerni, вы решили это для меня.

Для этого:

+-----------------------------------------+
| +-------+                     +-------+ |
| | Text1 |                     | Text1 | |
| +-------+                     +-------+ |
|+----------------------------------------+

Вы должны сделать это:

<div style="overflow:auto">
    <div style="display:inline-block;float:left"> Text1 </div>
    <div style="display:inline-block;float:right"> Text2 </div>
</div>
3
задан Jobs 27 April 2016 в 00:19
поделиться

4 ответа

Позвольте мне просто бросить очень простой пример с гораздо меньшим размером. Принцип должен быть одинаков.

a = np.zeros((6,2))
    array([[ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.],
           [ 0.,  0.]])
b = np.ones((6,1))
    array([[ 1.],
           [ 1.],
           [ 1.],
           [ 1.],
           [ 1.],
           [ 1.]])

np.hstack((a,b))
array([[ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  1.]])
10
ответ дан Hun 19 August 2018 в 12:41
поделиться
  • 1
    Это работает! Мой массив составляет 60000 к 201 сейчас. Благодарю. трюк здесь заключается в определении np.ones () как (6, 1) вместо (6), что я и делал. – Jobs 27 April 2016 в 00:36
  • 2
    – Sandu Ursu 31 August 2018 в 11:44

Первое, о чем нужно подумать, это то, что массивы numpy действительно не предназначены для изменения размера. Поэтому вы должны спросить себя: можете ли вы создать исходную матрицу как 60k x 201, а затем заполнить последний столбец. Обычно это лучше.

Если вы действительно должны это сделать, см. Как добавить столбец в массив numpy

2
ответ дан Community 19 August 2018 в 12:41
поделиться

Под крышкой все варианты stack (включая append и insert) заканчивают выполнение concatenate. Они просто предшествуют ему с каким-то изменением массива.

In [60]: A = np.arange(12).reshape(3,4)

In [61]: np.concatenate([A, np.ones((A.shape[0],1),dtype=A.dtype)], axis=1)
Out[61]: 
array([[ 0,  1,  2,  3,  1],
       [ 4,  5,  6,  7,  1],
       [ 8,  9, 10, 11,  1]])

Здесь я сделал массив (3,1) из 1s, чтобы соответствовать массиву (3,4). Если бы я хотел добавить новую строку, я бы сделал массив (1,4).

Хотя варианты удобны, если вы учитесь, вы должны ознакомиться с concatenate и различными способы построения массивов, которые соответствуют количеству измерений и необходимым формам.

2
ответ дан hpaulj 19 August 2018 в 12:41
поделиться

Я думаю, что метод numpy column_stack более интересен, потому что вам не нужно создавать массив с колодом столбцов, чтобы уложить его в интересующую матрицу. С помощью column_stack вам просто нужно создать обычный массив numpy.

0
ответ дан Randerson 19 August 2018 в 12:41
поделиться
  • 1
    Что делает column_stack (под обложкой), отличная от hstack? – hpaulj 27 April 2016 в 01:30
  • 2
    То же самое, но не нужно создавать массив столбцов, если бы вы это сделали. Вы можете использовать линейный массив, а column_stack будет складывать его как новый столбец матрицы, которую вы хотите уложить в новый столбец. С помощью hstack вы должны использовать массив столбцов, иначе он вернет ошибку. – Randerson 27 April 2016 в 11:40
Другие вопросы по тегам:

Похожие вопросы: