【问题标题】:How to insert a series of numbers into a matrix?如何将一系列数字插入矩阵?
【发布时间】:2020-02-18 16:11:43
【问题描述】:

例如,我有一个 9x9 矩阵:

x=[
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
        [0,0,0,0,0,0,0,0,0],
]

我想插入一系列数字,如示例:

aux=900000001051200030000980000680740000730000908010058670008100000002007090190004060

我希望能够将每个数字放入矩阵的单独位置,但我在解决这个问题时有点卡住了。

【问题讨论】:

  • in an individual position,你能具体说明你的意思吗?
  • aux 是否总是一个 81 位整数,还是可能更短?在这种情况下,我们可以假设最高位是0吗?

标签: python


【解决方案1】:
  • 此单行器的工作原理是除以 9 并再次映射到整数。
  • for i in range(0, len(str(aux)), 9) 这将遍历大小为 9 的块。
  • list(map(int, aux[i,i+9])) 这会将每个字符从 string 映射到 int 并创建它的列表。您可以在 python 中查看map 函数以获取更多信息。
  • 在列表理解中结合以上两个步骤将为您提供列表列表。
aux=900000001051200030000980000680740000730000908010058670008100000002007090190004060 # assumption 81 digit number or string ?
m = [list(map(int, str(aux)[i:i+9])) for i in range(0, len(str(aux)), 9)]
print(m)
  • 输出
[[9, 0, 0, 0, 0, 0, 0, 0, 1],
 [0, 5, 1, 2, 0, 0, 0, 3, 0],
 [0, 0, 0, 9, 8, 0, 0, 0, 0],
 [6, 8, 0, 7, 4, 0, 0, 0, 0],
 [7, 3, 0, 0, 0, 0, 9, 0, 8],
 [0, 1, 0, 0, 5, 8, 6, 7, 0],
 [0, 0, 8, 1, 0, 0, 0, 0, 0],
 [0, 0, 2, 0, 0, 7, 0, 9, 0],
 [1, 9, 0, 0, 0, 4, 0, 6, 0]]

【讨论】:

  • 你能解释一下函数吗?
  • @DaniloSantos 添加了一些解释。您可以阅读地图和列表理解以更好地理解。
【解决方案2】:

以下使用 Python 3.7 的代码将为您完成这项工作:

if __name__ == "__main__":
    # size of the array n x n
    n = 9

    # the n x n array
    x = [[0]*n]*n

    # the input number converted as a string
    aux = "900000001051200030000980000680740000730000908010058670008100000002007090190004060"

    k = 0
    for i in range(0,n):
        for j in range(0,n):
            x[i][j] = aux[k]
            k = k + 1

然后打印你做的矩阵 x:

import numpy as np

# print the modified array x
print(np.matrix(x))

给出输出:

[['9' '0' '0' '0' '0' '0' '0' '0' '1']
 ['0' '5' '1' '2' '0' '0' '0' '3' '0']
 ['0' '0' '0' '9' '8' '0' '0' '0' '0']
 ['6' '8' '0' '7' '4' '0' '0' '0' '0']
 ['7' '3' '0' '0' '0' '0' '9' '0' '8']
 ['0' '1' '0' '0' '5' '8' '6' '7' '0']
 ['0' '0' '8' '1' '0' '0' '0' '0' '0']
 ['0' '0' '2' '0' '0' '7' '0' '9' '0']
 ['1' '9' '0' '0' '0' '4' '0' '6' '0']]

【讨论】:

  • 你可以用import numpy as npx = np.zeroes((9,9))替换你的数组,这样你就不需要手动输入列表了。 :P
  • @Enthus3d 然后出现错误。找不到模块名称 numpy。
  • @Poojan install numpy using '''pip install numpy''',你错过了那个模块。
  • @Enthus3d 但我不允许安装第 3 方模块。
  • 您需要 numpy 数组来打印二维矩阵 x。如果您不需要打印它,请删除 numpy 包并删除最后一个打印命令。它完美无缺
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
相关资源
最近更新 更多