Я использую Python 3,7 с numpy 1.18.3. У меня есть массив, который содержит 4 строки. Мне периодически нужно добавлять новый столбец. Каждый раз, когда я добавляю новую запись в массив, она определяется как 4,1 массива (т).
Иногда я проверяю, будет ли корзина соответствовать распределению (d_entry ниже), и если это произойдет, мне придется вычесть выделение из корзины и обновить столбец.
import numpy как np
t = 4x1 numpy array [[ 150], [50000], [30000], [20000]]
d_entry = 4x1 numpy array [[2.6000e+01], [1.1638e+04], [5.0000e+00], [9.8290e+03]]
new_bin = np.subtract(t, d_entry)
bin_space = np.append(bin_space, new_bin, axis=1)
Так, например, с двумя записями bin мой bin_space выглядит примерно так:
[[ 107. 124.], [27798. 38362.], [29992. 29995.], [ 9401. 10171.]]
Время от времени записи (столбцы) пространства bin необходимо обновить, как объяснено, заменяя записи обновленными столбцами 4 x 1.
Для этого я ссылаюсь на столбец bin_space следующим образом:
space_left = np.array(bin_space[:,j])
(который, по словам PyCharm, теперь является (4,) - не 4,1
bin_space[:,j] = np.subtract(space_left, d_entry)**
Затем я получаю сообщение об ошибке. Я не уверен, как массив может извлечь тот же тип.
Traceback (самый последний последний вызов): файл "D: /Development/oasg-apps/src/mcl/python/mcl_bin_packing.py", строка 398, в main () файле "D: / Development / oasg-apps / src / mcl / python / mcl_bin_packing.py ", строка 247, в основных n_bins, bin_for_item, bin_space = allocate_ffd (d_vectors, t_resource, num_metri cs_types) Файл "D: /Development/oasg-apps/src/mcl/python/mcl_bin_packing.py", строка 135, в allocate_ffd bin_space [:, j] = np.subtract (space_left, d_entry) ValueError: не удалось передать вход массив из формы (4,1) в форму (4)
Это воспроизводит проблему, но с "невозможно передать входной массив из формы (2,1) в форму (2)":
import numpy as np
bin_space = np.array([0, 0])
bin_space = np.reshape(bin_space, (2,1))
# Shape our target resources into a numpy array.
target_resource = np.array([150, 50000])
target_resource = np.reshape(target_resource,(2,1))
new_resource = np.array([10, 200])
new_resource = np.reshape(new_resource,(2,1))
bin_space = np.append(bin_space, target_resource, axis=1)
bin_space = np.append(bin_space, target_resource, axis=1)
bin_space[:,1] = new_resource
Любая помощь приветствуется.
Спасибо,
Клайв