繁体   English   中英

Python 遍历一个矩阵

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM