In [30]: res = np.array([])
In [31]: np.append(res, np.array(1))
Out[31]: array([1.])
In [32]: res
Out[32]: array([], dtype=float64)
Out[31}
является массивом с 1 элементом, потому что res
- это число с плавающей точкой. Но обратите внимание, что res
не изменился. np.append
- это просто плохо продуманная «обложка» для np.concatenate
.
concatenate
немного требовательна к размерам входов
In [33]: np.concatenate([ res, np.array(1)])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-33-bb45ea1930d0> in <module>
----> 1 np.concatenate([ res, np.array(1)])
<__array_function__ internals> in concatenate(*args, **kwargs)
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 1 has 0 dimension(s)
In [34]: np.concatenate([ res, np.array([1])])
Out[34]: array([1.])
Это объединяет одно (0, ) массив формы с формой (1,) для получения (1,). Этот массив []
почти бесполезен.
concatenate
занимает целый список массивов (или даже списки). Воспользуйтесь этим:
In [35]: np.concatenate([np.array([1]), np.array([2]), [3], [1,2,3]])
Out[35]: array([1, 2, 3, 1, 2, 3])
Но почему вы делаете append
в oop? Почему бы не добавить список? Это работает на месте и относительно быстро и без ошибок. Зачем делать жизнь тяжелой для себя?