我是Python的新手,我正在尝试翻译Matlab代码。我正在尝试编写一个程序,该程序以用户从IR训练频谱上传或输入数据开始,然后程序将其附加到数组或矩阵中。但我不确定我这样做是否正确(特别是因为我一直在犯错!)
# 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”,程序运行正常。如何让它将每个输入识别为列表中的单独项目?
答案 0 :(得分:1)
到目前为止您的代码还可以,但如果您使用python 2.7,btrain = [input("Input btrain as a list of values separated by commas.")]
将最终成为单个字符串的列表或值的元组列表。正确的方法是
btrain = input("Input btrain as a list of values separated by commas.").split(",")
split(delimiter)给出了在这种情况下在某个分隔符处分割的所有值的列表&#34;,&#34;