csv 如何在Python中将整个矩阵作为输入?

vq8itlhq  于 2023-01-22  发布在  Python
关注(0)|答案(1)|浏览(95)

我想把一个完整的矩阵作为Python的输入,并将其存储在一个数据框中。Pandas可以使用read_csv函数自动完成,但它需要一个CSV文件。我想直接在输入处输入/复制粘贴一个矩阵。而不指定其高度或宽度,并使用换行符作为分隔符智能地分隔行和列,并将其存储在 Dataframe 中。csv源代码,但这一切都超出了我的头。您的帮助将不胜感激。
什么是矩阵:基本上是一个数学表或数据框,看起来像这样... matrix in a notepad
到目前为止我想到的都是老一套:

'''
inp=input("Enter the Size of Your Matrix: ")
inp=inp.translate({ord(i): None for i in 'x ,'})
w=int(inp[0])
h=int(inp[1])
        
print(w, "and", h)

df=pd.DataFrame()

for x in range(h):
    for i in range(w):
        m=input("Enter Data into Matrix at Position")
        print(x,",",i)
        df.loc[x,i]=m
        
print(df)

'''我想做的是,如果我有一个像上面所示的那样复制的矩阵,我可以直接使用它作为输入来存储在 Dataframe 中,并且我希望代码足够智能,以便在有换行符的地方自动拆分行。

nhjlsmyf

nhjlsmyf1#

您可以使用sys.stdin.read()从stdin中很好地读取...。

import sys

matrix = sys.stdin.read()

matrix = matrix.strip().split('\n')
matrix = [row.split(' ') for row in matrix]

现在您得到了类似[['2', '3', '4'], ['6', '7', '8'], ['4', '1', '1']]的文件,可以将其转换为所需的格式。
请注意,粘贴矩阵后,仍需要通知系统停止阅读。在Windows中,可以先使用Ctrl + Z,然后使用Enter。在Linux中,可以使用Ctrl + D(之后不输入)。

相关问题