Я работаю с большими массивами, представляющими сетку маршрутизации лабиринта, каждый элемент является объектом Cell с атрибутами x, y.
Я пытаюсь использовать numpyfunc для инициализации координат в каждой ячейке с помощью векторизованной функции.
У меня есть векторизованная функция, которая устанавливает координату X объекта Cell:
def setCellX(self,c,x):
c.setX(x)
return c
setCellX_v = np.vectorize(self.setCellX)
Я заключаю это в frompyfunc
setCellX_npfunc = np.frompyfunc(self.setCellX_v,2,1)
Когда я вызываю это для 1-D массива, он работает как положено
Gx = 3000
Gy = 4000
# Initialize single row
R = np.array([Cell(0,y) for y in range(int(self.Gy))])
# Create array of X-coordinates
x_indices = [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
print R[6].x
0
setCellX_npfunc(R,x_indices)
print R[6].x
6
Когда я устанавливаю R в качестве двумерного массива, я ожидаю, что numpyfunc будет перебирать каждую строку и соответственно устанавливать значения X:
R = np.empty(shape=(20,20),dtype=object)
R.fill(Cell(0,0))
setCellX_npfunc(R,x_indices)
print(R[3][6].x)
19
Почему бы numpyfunc не установить значения X для каждого 1-го вектора на соответствующее значение в x_indices, как это было в первом примере?