问题描述
对不起,如果以前有人问过我,我什么都找不到。
我正在尝试定义一个函数,该函数接受任意数量的如下所示的.txt文件
读取它们,连接所有行并将其保存到一个numpy数组中。这适用于一个.txt文件。一旦我使用了两个文件,我就得到array([nan,nan])
作为回报,有了三个文件array([nan,nan,nan])
,等等。
import numpy as np
def readInSpectra(*files):
raw = np.genfromtxt(files[0],skip_header=0,delimiter='\t')
for i in range(1,len(files)):
raw_i = np.genfromtxt(files[i],delimiter='\t')
raw = np.vstack((raw,raw_i))
return raw
files = ('./file1.txt','./file2.txt','./file3.txt')
test = readInSpectra(files)
解决方法
我不确定,但我认为重复的vstack
是一个问题,因为数组的形状会发生变化。您是否尝试过:
def readInSpectra(*files):
stacking = tuple(np.genfromtxt(file,skip_header=0,delimiter='\t')
for file in files)
return np.vstack(stacking)
编辑:我认为您应该以这种方式调用该函数
test = readInSpectra(*files)
或
test = readInSpectra('./file1.txt','./file2.txt','./file3.txt')
,
两者都应该起作用,我建议您按照@obchardon的建议进行第二次
import wx
class MainFream(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,title='test',size=(500,500),style=wx.DEFAULT_FRAME_STYLE)
self.MainPanel = wx.Panel(self)
test = []
button_id = []
for i in range(1,21):
test.append(i)
button_id.append(wx.NewId())
self.button = []
for i in range(len(test)):
self.button.append(wx.Button(self.MainPanel,button_id[i],label=(str(test[i]))))
self.button[i].Bind(wx.EVT_BUTTON,self.OnButton)
self.button[2].SetOwnForegroundColour(wx.RED)
self.button[9].SetOwnForegroundColour(wx.GREEN)
self.button[12].SetOwnForegroundColour("brown")
self.button[16].SetOwnForegroundColour("cadetblue")
sizer = wx.FlexGridSizer(0,5,5)
for i in self.button:
sizer.Add(i,wx.ALL,0)
self.MainPanel.SetSizer(sizer)
def OnButton(self,event):
Id = event.GetId()
Obj = event.GetEventObject()
print ("Button Id",Id)
print ("Button Pressed:",Obj.GetLabelText())
if __name__ == '__main__':
app = wx.App()
fream = MainFream()
fream.Show()
app.MainLoop()