我想将 numpy 中给定数组的值更改为数组其他元素的乘积。因此,我想提取 multi_index 并对其进行操作,以便我可以识别位置并使用它。(例如,遍历所有元素并始终执行“数组中的当前位置=数组中的下一个位置+位置上方”
我试图用当前位置的 multi_index 调用一个函数,并希望所述函数采用它,例如将它增加一个位置。(<0 , 1> ---> <0 , 2> while <0 , n> n>=length 否则 <0 , 1> ---> <1 , 0>)
import numpy as np;
def fill(multi_index):
"This will get the new value of the current iteration value judgeing from its index"
return a[(multi_index + <0,1>) + (multi_index + <0,-1>) + (multi_index + <1,0>) + (multi_index + <-1,0>)]
#a = np.random.uniform(0, 100, size=(100, 100))
a = np.arange(6).reshape(2,3)
it = np.nditer(a, flags=['multi_index'], op_flags=['readwrite'])
while not it.finished:
it[0] = fill(it.multi_index)
print(it[0])
it.iternext()
"""for x in np.nditer(a, flags=['multi_index'], op_flags=['readwrite']):
print(x)"""
我不明白如何从 multi_index 中提取实际的“坐标”。我对python有点陌生,所以如果可能的话,请尝试彻底解释它。谢谢。
编辑:在我只用 C++ 和一点 Java 编码之前,所以我以前主要使用数组(在 C++ 中它会是这样的:
int main() {
int a[100][100];
for (int i=1, i<=a.length-1, i++) {
for (int j=1, i<=a.width-1, j++) {
a[i][j] = 1/4 (a[i][j+1]+a[i][j-1]+a[i+1][j]+a[i-1][j]);
}
}
return 0;
}