我看到了下面的代码here,它试图迭代一个numpy数组arr并修改它的元素。但是,我不太明白使用省略号(...)的目的是什么。如果我删除省略号(即使用x = x * 2),则不会修改arr的元素。希望得到你的一些提示!谢谢。
for x in np.nditer(arr,op_flags='readwrite'):
x[...] = x*2;
答案 0 :(得分:2)
省略号...
是一个内置的Python符号,用于指定N维Numpy数组中的切片,例如a[0,...,0]
对于5-D数组相当于a[0,:,:,:,0]
a
。
nditer
对象使用此语法使迭代器可写。
使用迭代器对象作为左值修改对象本身而不是它所引用的数组中的位置。所以x[...]
是用于解除引用迭代器的语法。
您也可以使用此语法来访问读取值,但这是多余的。
另请注意,op_flags的语法不正确。它应该是一个列表或元组。
for x in np.nditer(arr,op_flags=['readwrite']):
x[...] = x*2;