Если бы я писал на C ++, я мог бы сделать следующее:
double foo [9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
double* bar = foo;
cout << bar[0] << ", " << bar[1] << ", " << bar[2] << "\n";
bar += 3;
cout << bar[0] << ", " << bar[1] << ", " << bar[2] << "\n";
bar += 3;
cout << bar[0] << ", " << bar[1] << ", " << bar[2] << "\n";
Это напечатало бы:
0, 1, 2
3, 4, 5
6, 7, 8
Теперь я хочу сделать то же самое в numpy:
foo = np.arange((9))
bar = foo[:3]
print(bar)
???
print(bar)
???
print(bar)
Но я не знаю, что поставить на ???
Результат, надеюсь, будет:
[0 1 2]
[3 4 5]
[6 7 8]
Другими словами, я ищу способ изменить место, где видbar
указывает на foo
, используя существующую ссылку bar
.
То есть я хотел бы иметь возможность записать ???
как bar = f(bar)
, где f
- некоторая функция, определенная пользователем.
Редактировать:
Вот как я это делаю сейчас:
def f(idx=[0]): #mutable default argument
idx[0] += 3
return foo[idx[0]-3:idx[0]]
for key in key_list:
a_dict[key] = f()
b_dict[key] = f()
for view in range(num_views):
a_list.append(f())
b_list.append(f())
Он должен быть в векторе, потому что scipy.optimize.least_squares
требует, чтобы все значения хранились в одном и том же векторе.