创建一个包含用户输入维度和数字的矩阵 - Python

时间:2017-05-18 20:11:54

标签: python matrix

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

这是我到目前为止所做的:

    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]]和#34;)。其次,第二个矩阵似乎有一个错误:" IndexError:列表赋值索引超出范围"。对于随机数填充,我知道我可以使用np.matrix和np.random。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

另外,作为注释 - 您正在使用2D列表来表示您的矩阵,以便进行说明。 numpy并不是必需的。