проблема добавления столбцов и строк с помощью numpy append и hstack - PullRequest
0 голосов
/ 26 февраля 2020
X = np.random.randint(0,10,25).reshape(5,5)
rowsums = np.array([sum(row) for row in X])
print(X.shape)       >>> (5,5)
print(rowsums.shape) >>> (5,)

all_data = np.append(X, rowsums, axis=1)
>>>> ValueError: all input arrays must have same number of dimensions...

all_data = np.hstack((X, rowsums))
>>>> ValueError: all input arrays must have same number of dimensions...

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

Хорошо, поэтому я предполагаю, что форма моих сумм строк должна быть (5,1), и действительно rowums.reshape (5,1) делает свое дело. Но почему? Полагаю, я здесь плотная, но форма не выглядит (5, 1) выглядит так:

[[],
 [],
 [],
 [],
 []]

Какой тип имеет смысл для колонки ... Однако, когда я хочу добавить строку, без функции добавления, сглаживающей мой ndarray, я должен изменить ее (1,5), даже если она уже в той же форме, что и все остальные строки в ndarray.

строка в 2-й строке выглядит следующим образом:

[1,2,3,4,5]

, но numpy хочет, чтобы я изменил ее на

[[1],[2],[3],[4],[5]]

, когда ни одна из существующих строк не выглядит так. Полагаю, я не должен задавать вопросов, но что-то мне кажется странным.

...