import numpy as np
a = np.arange(0,60,5)
a = a.reshape(3,4)
for x in np.nditer(a, op_flags = ['readwrite']):
x[...] = 2*x
print 'Modified array is:'
print a
Почему в приведенном выше коде мы не можем просто написать x=2*x вместо x[...]=2*x?
x = 2*x
внутри этого цикла, вы просто создадите новую переменную x (отличную от той, которая получена в результате итерации) и присвоите ей результат. Сx[...] = 2*x
вы изменяете x напрямую. Вы можете проверить этот пост. - person ayhan   schedule 02.09.2018x = 2*x
не создает новую переменную. Просто переменная — это не то, что нам нужно изменить. Присвоение переменной нам не помогает. - person user2357112 supports Monica   schedule 02.09.2018nditer
. Сосредоточьтесь на операциях с целым массивом, напримерb=2*a
. Даже когда вы должны использовать итерацию, это не самый быстрый или простой способ. - person hpaulj   schedule 02.09.2018nditer
, docs.scipy.org/doc/numpy/reference /arrays.nditer.html будет наиболее полезен, если вы прочитаете его до конца и поэкспериментируете с портомcython
. В противном случае вы получите ложное представление о его полезности. - person hpaulj   schedule 02.09.2018