In [21]: Z=np.array([])
In [22]: Z.shape
Out[22]: (0,)
Как вы ожидаете добавить что-то в массив с этой формой?
np.append
работает, но только потому, что если сначала убедиться, что Z
по крайней мере 1d, то есть это ravelsit.
In [23]: np.append(Z,np.arange(10))
Out[23]: array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
Нам нужны какие-то большие жирные буквы в numpy
, в которых говорится, НЕ ПЫТАЙТЕСЬ ПРИЛОЖИТЬ (или объединять, или складывать), Массивы в цикле.
Вы пробовалипостроение списка столбцов с последующим использованием только одной конкатенации?
alist = []
for i in [3,8,10]:
alist.append(K[:,[i]])
print(alist)
Z = np.concatenate(alist, axis=1)
# Z=[K[:,3] K[:,8] K[:,10]]
или
alist = []
alist.append(3); alist.append(8); alist.append(10)
Z = K[:,alist]
У многократных конкатенаций массивов есть две большие проблемы - это медленный процесс, и его трудно получитьначалось.Этот (0,) массив фигур является горячей заменой пустого списка.
Если вам нужно сделать что-то итеративно, подумайте о списках.Добавление списка является относительно быстрым и простым в использовании.