np.concatenate
принимает список массивов, плюс скалярный параметр axis
(необязательно)
In [411]: values=np.array([[1,2,3,4],[5,6,7,8]])
...:
Ничего плохого в том, как вы делите values
:
In [412]: x=values.shape[1]
In [413]: x
Out[413]: 4
In [415]: values[0,0:int((x-1)/2)],values[1,int((x-1)/2):x+1]
Out[415]: (array([1]), array([6, 7, 8]))
неправильный:
In [416]: np.concatenate(values[0,0:int((x-1)/2)],values[1,int((x-1)/2):x+1])
----
TypeError: only integer scalar arrays can be converted to a scalar index
Он пытается интерпретировать второй аргумент как параметр оси, отсюда и сообщение об ошибке scalar
.
вправо:
In [417]: np.concatenate([values[0,0:int((x-1)/2)],values[1,int((x-1)/2):x+1]])
Out[417]: array([1, 6, 7, 8])
Естьдругие concatenate
внешние интерфейсы.Здесь hstack
будет работать так же.np.append
занимает 2 массива, так что будет работать - но слишком часто люди используют его неправильно.np.r_
- это другой интерфейс с другим синтаксисом.
Индексирование может быть более понятным с помощью:
In [423]: idx = (x-1)//2
In [424]: np.concatenate([values[0,:idx],values[1,idx:]])
Out[424]: array([1, 6, 7, 8])