【问题标题】:Create a matrix with user input dimension and numbers - Python创建具有用户输入维度和数字的矩阵 - Python
【发布时间】:2017-05-18 20:11:54
【问题描述】:

我试图创建两个矩阵,让用户决定维度,然后在一个一个输入数字或让系统用随机数填充它之间进行选择。稍后,程序应该将两个矩阵相乘并打印结果。

这是我目前所拥有的:

    import numpy as np
    print("Choose 4 numbers: ")
#Dimensions for the first matrix
    m = int(input("m: "))
    n = int(input("n: "))
#Dimensions for the second matrix
    m2 = int(input("m2: "))
    n2 = int(input("n2: "))
    mat = [0]
    mat=[(mat*n)]*m


    op = int(input("How would you like to arrange your matrix? For number by number press  1, \
     for random matrix press 2: "))



    if op == 1:
        for i in range(m):
            for j in range(n):
                num = int(input("Choose a number: "))
                mat[i][j] = num
        print (mat)

for x in range(m2):
            for y in range(n2):
                num2 = int(input("Choose a number: "))
                mat[x][y] = num2
        print (mat)

我有几个问题。首先,第一个矩阵是线性形式(例如:“[[1,2,3],[4,5,6],[7,8,9]]”)。其次,第二个矩阵似乎有错误:“IndexError: list assignment index out of range”。对于随机数填充,我知道我可以使用 np.matrix 和 np.random。

提前谢谢你!

【问题讨论】:

  • “第一个矩阵是线性形式”是什么意思?是不是类似于“[[1,2,3],[4,5,6],[7,8,9]]”?
  • @ErikBrodyDreyer 是的,完全正确。
  • 这就是列表列表的表示方式。您可以编写自己的打印函数以使其看起来像矩阵的方式打印矩阵,但这就是默认打印将显示矩阵的方式。这不是错误。

标签: python matrix


【解决方案1】:

您的第一个矩阵的代码确实正确地生成了一个 n x m 矩阵,所以这是正确的。线性输出[[0,0],[0,0]] 就是矩阵的显示方式。但是,您永远不会制作第二个矩阵。确保也初始化第二个矩阵!

mat2=[([0]*n2)]*m2

否则,您将使用第二个矩阵的索引对第一个矩阵进行索引。

另外,请注意 - 您正在使用 2D 列表来表示您的矩阵,以进行澄清。这不需要 numpy。

【讨论】:

    猜你喜欢
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 2021-01-31
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多