Я пытаюсь создать фрейм данных для представления топографического выражения. До сих пор я написал пару циклов for, которые можно использовать по отдельности для выражения осей x и y, особенно в формах,
a = []
for x in range(1,i,1):
x1 = some function of x
x2 = another function of x
a.append({'a':x, 'b':x1, 'c': x2})
xaxis = pd.DataFrame(a)
для оси x и,
a = []
for y in range(-j, j, 1):
y1 = some function of y
a.append({'a':y,'b':y1})
yaxis = pd.DataFrame(a)
для оси у.
Все достаточно просто и работает нормально, однако...
Я хочу расширить это так, чтобы цикл оси y повторялся с каждой итерацией цикла оси x, а функция y1 зависела от параметров цикла оси x. Я захожу так далеко,
a = []
for x in range(1,i,1):
x1 = some function of x
x2 = another function of x
for y in range(-j, j, 1):
y1 = some function of y that calls x2
a.append({
и я в тупике.
Результат, который мне нужен, по сути, таков:
x x1 x2 y y1
x1(1) x2(1) -j y1(1,-j)
1 x1(1) x2(1) 0 y1(1,0)
x1(1) x2(1) j y1(1,j)
x1(2) x2(2) -j y1(2,-j)
2 x1(2) x2(2) 0 y1(2,0)
x1(2) x2(2) j y1(2,j)
....
и так далее до x = i.
Конечное желание состоит в том, чтобы иметь данные, которые можно представить в виде двумерной гистограммы.
Если есть лучший способ сделать это, пожалуйста, дайте мне знать, это единственный способ, который я могу сейчас придумать, чтобы получить результат, который мне нужен.
edit: Оказывается, это можно сделать довольно эффективно, используя массивы numpy. Это общее выражение того, как я достиг этой цели в конце концов,
y1 = lambda x,y: f(x,y)
np.array( [ [ y1(x,y) for x in xrange(1,i,1)] for y in xrange(-j,j,1)] )