我对Python很陌生,我试图翻译Matlab代码。我试图编写一个程序,以用户从红外培训光谱上传或输入数据开始,然后将程序附加到数组或矩阵中。但我不能肯定我这样做是正确的如何让用户在Python上输入矩阵?
# Requires numpy and math.
# Import necessary modules.
import numpy as np
import math
# Get data for the training spectra as a list.
# Then turn that list into a numpy array given the user's input of how many
# rows and columns there should be.
# (An alternate way to do this would be to have users input it with commas and
# semi-colons.)
# btrain_matrix returns the array.
def btrain_matrix():
btrain = [input("Input btrain as a list of values separated by commas.")]
btrain_row_number = int(input("How many rows should there be in this matrix? \n i.e., how many training samples were there?"))
btrain_column_number = int(input("How many columns should there be in this matrix? \n i.e., how many peaks were trained?"))
btrain_array=np.array(btrain)
btrain_multidimensional_array = btrain_array.reshape(btrain_row_number,btrain_column_number)
print(btrain_multidimensional_array)
return (btrain_multidimensional_array)
btrain_matrix()
btrain_row_number = input("Please re-enter the number of rows in btrain.")
# Insert a sequence to call btrain_matrix here
我得到的错误是这样的(尤其是因为我不断收到错误!):
Input btrain as a list of values separated by commas.1,2,3
How many rows should there be in this matrix?
i.e., how many training samples were there?1
How many columns should there be in this matrix?
i.e., how many peaks were trained?3
Traceback (most recent call last):
File "C:\Users\Cynthia\Documents\Lodder Lab\Spectral Analysis\Supa Fly.py", line 24, in <module>
btrain_matrix()
File "C:\Users\Cynthia\Documents\Lodder Lab\Spectral Analysis\Supa Fly.py", line 19, in btrain_matrix
btrain_multidimensional_array = btrain_array.reshape(btrain_row_number,btrain_column_number)
ValueError: total size of new array must be unchanged
如果我输入“1 ,2,3“和”1“,”1“,程序运行良好。如何让它将每个输入识别为列表中的单独项目?
只是基于用户的备注 - 不问任何人用手将矩阵放入stdin中。这不是一个有用的方法。只需要以某种通用格式请求一个包含矩阵的文件的路径,例如.csv – lejlot
“*我一直收到错误*”是我们无法帮助您的足够信息。 –
@lejlot这可能是一个非常愚蠢的问题,但你怎么做? –