Для подобных вопросов документы могут быть действительно полезны.Проверьте их здесь:
Используя их вынайду:
In [2]: np_2d = np.array([[1.73, 1.68, 1.71, 1.89, 1.79], [65.4, 59.2, 63.6, 88.4, 68.7]])
...:
In [2]: np_2d
Out[2]:
array([[ 1.73, 1.68, 1.71, 1.89, 1.79],
[65.4 , 59.2 , 63.6 , 88.4 , 68.7 ]])
Обратите внимание на ввод в np.array
.Это один список, содержащий 2 списка одинаковой длины.
In [3]: np_2d_again = np.array([1.1, 2.2, 3.3])
In [4]: np.append(np_2d_again, [4.4, 5.5, 6.6])
Out[4]: array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])
Посмотрите на np.append
документы.Видите, что говорит о бродяжничестве?Он соединяет один (3,) массив с другим, результатом является (6,).
np.append
плохо назван и часто используется неправильно.Это не капля вместо добавления в список.Во-первых, он не работает на месте.
В вашем np.concatenate(np_2d_again, np.array([4.4, 5.5, 6.6]))
вы получаете ошибку, поскольку он ожидает номер оси в качестве второго аргумента.Перечитайте документы.Вам нужно дать список массивов, к которым вы хотите присоединиться.np.append
может ввести в заблуждение.
Правильный способ использования concatenate
:
In [6]: np.concatenate([np_2d_again, np.array([4.4, 5.5, 6.6])])
Out[6]: array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])
Но так как оба входа (3,), они могут быть соединены только на оси 0Создание формы (6,).
np2_2d_again = np.array(np_height, np_weight)
имеет аналогичную проблему.Второй аргумент должен быть dtype, а не другим массивом.Вы правильно использовали np.array
в первый раз.
In [7]: np.array([np_2d_again, np.array([4.4, 5.5, 6.6])])
Out[7]:
array([[1.1, 2.2, 3.3],
[4.4, 5.5, 6.6]])
np.array
соединяет компоненты вдоль новой оси.Он обрабатывает список массивов в основном так же, как ваш первоначальный список списков.
np.stack
является полезным интерфейсом для concatenate
, который ведет себя как np.array
(с немного большей гибкостью в использованииоси):
In [8]: np.stack([np_2d_again, np.array([4.4, 5.5, 6.6])])
Out[8]:
array([[1.1, 2.2, 3.3],
[4.4, 5.5, 6.6]])