[英]Python iterate through a matrix
我有一个 function 计算输入向量中所有值组合的一些结果:
MyFunction(inp_vec):
...
return some_array
inp_vec
可以是 1 到 6 之间的任意长度的列表。因此,output 数组some_array
可以分别是 (1,1) 和 (6,6) 之间的任意大小。
对于一些进一步的计算,我想组装一个大小为 (6,6) 的数组,该数组将由第A = np.empty([6,6])
和相应的条目组成,如计算由 function 替换为一些值。
问题是 output 数组some_array
的大小可能不同于 (6,6)。
我想使用类似numerate()
的东西,但在这种 for 循环中:
for i,j in list(itertools.product(inp_vec, inp_vec)):
A[n,m] = some_array[i, j]
如何获得迭代器 n,m?
我认为这就是你想要的:
import numpy as np
import itertools
inp_vec = np.array([1,2,3])
A = np.empty([6,6])
M = np.array(list(itertools.product(inp_vec, inp_vec))).reshape(len(inp_vec),-1,2)
print(M)
output:
[[[1 1]
[1 2]
[1 3]]
[[2 1]
[2 2]
[2 3]]
[[3 1]
[3 2]
[3 3]]]
最后通过在 for 循环中引入迭代器 n 和 m 来解决 output 数组中的条目与目标数组之间的映射:
for i,j in itertools.product(some_array_indices, some_array_indices):
m = inp_vec_indices[i]
n = inp_vec_indices[j]
A[m][n] = float(some_array[i][j])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.