я столкнулся странную ошибку в NumPy (?): Учитывая вложенную массив:питон Numpy мутировать выбор
p = np.asarray([[1., 2., 3.], [-4., -5., -6.], [1,2,-4]], dtype=np.float32)
который
array([[ 1., 2., 3.],
[-4., -5., -6.],
[ 1., 2., -4.]], dtype=float32)
я хочу мутировать третью запись массива условно, как
p[p[:, 2] <0][:, 2] *= -1
Последнее утверждение, однако, не мутирует p. НАДЕЮСЬ для вывода как
array([[ 1., 2., 3.],
[-4., -5., 6.],
[ 1., 2., 4.]], dtype=float32)
, но на самом деле это не делает ничего. p остается неизменным. Я проверил много вещей, и я не пришел к выводу, почему p не мутирует.
Конечно, я могу как-то обойти это, но мне это кажется странным. Приветствия и спасибо заранее. Daniel
Обратный порядок ваших квадратных скобок должен исправить, т. Е. 'P [:, 2] [p [:, 2] <0] * = -1'. Булевское индексирование возвращает копию, если вы не выполняете присвоение ей, что вы можете добиться, сделав ее последней операцией индексации. – Jaime
ЭТО ответ на мой вопрос. Я бы отметил это как правильно, если бы мог :) –
Там вы идете, теперь это ответ, который вы можете принять. ;-) – Jaime