我想通过用户输入n
的值和矩阵元素来生成n * n矩阵。
以下是代码:
n=int(input("Enter the matrix size"))
import numpy as np
#initialise nxn matrix with zeroes
mat=np.zeros((n,n))
#input each row at a time,with each element separated by a space
for i in range(n):
for j in range(n):
mat[i][j]=input()
print(mat)
但是我得到这样的输出
[[1. 2.]
[3. 4.]]
和。 (点)在我不需要的数字之后。有没有办法使用循环和数组而不是NumPy
来做到这一点?
答案 0 :(得分:7)
您快要接近了。您只需在将矩阵初始化为
时将数据类型声明为dtype=int
。
mat=np.zeros((n,n), dtype=int)
然后您将没有点,而只有
[[1 2]
[3 4]]
答案 1 :(得分:5)
这是因为默认情况下,np.zeros
将其值分配给float
。要更改该替换行:
mat=np.zeros((n,n))
具有:
mat=np.zeros((n,n), dtype=int)
它将为您提供所需的输出。
好的做法是在已使用的方法上使用help()
,以了解如何使用它们,如本例所示。
答案 2 :(得分:2)
您可以使用此:
n = int(input())
mat=[[int(input()) for x in range(n)] for i in range(n)]
您可以将上面的列表转换为numpy作为
np_mat = numpy.asarray(mat)
如果您想一次输入每一行,并且每个元素都用空格分隔,则可以这样做。
mat=[list(map(int, input().split())) for i in range(n)]
答案 3 :(得分:0)
include