【问题标题】:Mixing n lists of size m to create a matrix (m*m*m*..n times) in Python 3在 Python 3 中混合 n 个大小为 m 的列表以创建一个矩阵(m*m*m*..n 次)
【发布时间】:2021-08-10 11:54:52
【问题描述】:

需要从混合索引的“n”个列表中创建一个“矩阵”,以便每个列表递归地为矩阵贡献一个元素。使用典型的数学符号,其中 M 是矩阵变量,list'n' 是 n 个列表,我想要这样

M[i][j][k]... = list1[i]list2[j]list3[k]...

我知道如何通过嵌套for 循环来做到这一点,但不能对任意数量的列表做到这一点。

for i in range(len(list1)):
    for j in range(len(list2)):
        ...
            ...

编辑:例如如果我有

list1 = [1,2,3]
list2 = [0,7,8]
list3 = [4,5,6]

然后我想创建一个“矩阵”M(numpy 数组)这样

M[1,1,1] = (1,0,4)
M[1,2,3] = (1,7,6)
M[3,1,2] = (3,0,5)

这个矩阵总共有 27 个元素,结构为 3X3X3。

【问题讨论】:

    标签: list numpy-ndarray python-3.8


    【解决方案1】:

    不完全确定您要做什么。你能举个例子吗? 据我所知,你被困在确定 n 上。 计算n:

    list1 = [1,2,3]
    list2 = [0,7,8]
    list3 = [4,5,6]
    
    
    lsts = [item for item in dir() if 'list' in item]
    n = len(lsts)
    print(n)
    

    dir() 是你的 python 文件中的变量,直到那时。

    编辑: 你的例子没有意义。 matrix[1,1,1] 指的是矩阵中的单个值(实际上是张量,因为它是 3-d,矩阵是 2-d)。您的 matrix[1,1,1] 等于 3 个值。它应该等于单个值。您可以让每个值都等于一个向量,但是您的矩阵(实际上是张量)将具有另一个第 4 维,使您的张量为 3x3x3x3。

    在 Python 中,第一个值也用零表示。例如,list1[0] = 1、list2[0] = 0、list3[0] = 4、list1[1] = 2 等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      相关资源
      最近更新 更多