我试图使用scikit-learn来拟合一些高斯人,因为scikit-learn GaussianMixture似乎比使用curve_fit更强大.
问题:在拟合甚至单个高斯峰的截断部分方面做得不好:
from sklearn import mixture
import matplotlib.pyplot
import matplotlib.mlab
import numpy as np
clf = mixture.GaussianMixture(n_components=1, covariance_type='full')
data = np.random.randn(10000)
data = [[x] for x in data]
clf.fit(data)
data = [item for sublist in data for item in sublist]
rangeMin = int(np.floor(np.min(data)))
rangeMax = int(np.ceil(np.max(data)))
h = matplotlib.pyplot.hist(data, range=(rangeMin, rangeMax), normed=True);
plt.plot(np.linspace(rangeMin, rangeMax),
mlab.normpdf(np.linspace(rangeMin, rangeMax),
clf.means_, np.sqrt(clf.covariances_[0]))[0])
Run Code Online (Sandbox Code Playgroud)
给
现在改为
data = [[x] for x in data]
以data = [[x] for x in data …
我正在寻找最便宜的方法来自动将文件夹结构中的所有文本文件(制表符分隔)转换为.xls格式,保持列和行的形状不变.
编辑:这就是诀窍:
import xlwt
import xlrd
f = open('Text.txt', 'r+')
row_list = []
for row in f:
row_list.append(row.split())
column_list = zip(*row_list)
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet1')
i = 0
for column in column_list:
for item in range(len(column)):
worksheet.write(item, i, column[item])
workbook.save('Excel.xls')
i+=1
Run Code Online (Sandbox Code Playgroud) 假设我想循环遍历数组并在循环索引中向前和向后索引所有索引,如下所示:
x = np.random.uniform(size=600)
for i in range(len(x)):
dot = np.dot(x[:-i], x[i:])
Run Code Online (Sandbox Code Playgroud)
现在这不起作用,因为x[:-0]
就像x[:0]
它给出的那样[]
.我可以单独处理零情况但是想知道是否有更多的pythonic方式来做这件事.
我想改变我的拟合图的宽度沿着以下线:
plot(fit, 'LineWidth', WidthSpec)
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我尝试绘制数据并同时适合时:
plot(fit, 'LineWidth', WidthSpec, XData, YData)
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息说
??? Error using ==> cfit.plot at 52
EXCLUDEDATA has greater length than XDATA.
Run Code Online (Sandbox Code Playgroud)
绘制两者而不指定宽度
plot(fit, XData, YData)
Run Code Online (Sandbox Code Playgroud)
工作得很好.
我使用的是Python 2.7.当我尝试将简单字符串打印到文件时,出现以下错误:
语法错误:无效的元组
检测元组时出现语法错误
最小的例子:
fly = open('workfile', 'w')
print('a', file=fly)
Run Code Online (Sandbox Code Playgroud)
通过fly.write('a')
工作写到同一个文件就好了.