我有一段代码在Linux中运行,我现在正试图在Windows中运行它,我导入sys但是当我使用sys.exit()时.我收到一个错误,sys没有定义.这是我的代码的开头部分
try:
import numpy as np
import pyfits as pf
import scipy.ndimage as nd
import pylab as pl
import os
import heapq
import sys
from scipy.optimize import leastsq
except ImportError:
print "Error: missing one of the libraries (numpy, pyfits, scipy, matplotlib)"
sys.exit()
Run Code Online (Sandbox Code Playgroud)
为什么sys不工作?
嗨,我有一个X值的数组,我想找到十个最小值的索引.在这个链接中,他们有效地计算了最大值,如何在numpy数组中获得N个最大值的索引? 但我不能评论链接,所以我不得不重新发布这个问题.
我不确定我需要改变哪些指数才能达到最小值而不是最大值.这是他们的代码
In [1]: import numpy as np
In [2]: arr = np.array([1, 3, 2, 4, 5])
In [3]: arr.argsort()[-3:][::-1]
Out[3]: array([4, 3, 1])
Run Code Online (Sandbox Code Playgroud) 我在python中有一组数据.我将其绘制为直方图,该图显示双峰分布,因此我试图在双峰中的每个峰上绘制两个高斯分布图.
如果我使用下面的代码,则需要我有两个相同大小的数据集.但是我只有一个数据集,这不能平分.我怎样才能适应这两位高斯人
from sklearn import mixture
import matplotlib.pyplot
import matplotlib.mlab
import numpy as np
clf = mixture.GMM(n_components=2, covariance_type='full')
clf.fit(yourdata)
m1, m2 = clf.means_
w1, w2 = clf.weights_
c1, c2 = clf.covars_
histdist = matplotlib.pyplot.hist(yourdata, 100, normed=True)
plotgauss1 = lambda x: plot(x,w1*matplotlib.mlab.normpdf(x,m1,np.sqrt(c1))[0], linewidth=3)
plotgauss2 = lambda x: plot(x,w2*matplotlib.mlab.normpdf(x,m2,np.sqrt(c2))[0], linewidth=3)
plotgauss1(histdist[1])
plotgauss2(histdist[1])
Run Code Online (Sandbox Code Playgroud) 据我所知,多项式回归是一种特定类型的回归分析,它比线性回归更复杂.有没有python模块可以做到这一点?我看过matplotlib,scikitand numpy但只能找到线性回归分析.
并且可以计算出非线性线的相关系数?
我的代码下面会在我的图表中生成一个点的polyfit,但是我希望这个适合总是通过零,我该怎么做?
import pylab as pl
import numpy as np
y=(abs((UX2-UY2)+(2*UXY)))
a=np.mean(y)
y=y-a
x=(abs((X2-Y2)+(2*XY)))
b=np.mean(x)
x=x-b
ax=pl.subplot(1,4,4) #plot XY
fit=pl.polyfit(x,y,1)
slope4, fit_fn=pl.poly1d(fit)
print slope4
fit_fn=pl.poly1d(fit)
x_min=-2
x_max=5
n=10000
x_fit = pl.linspace(x_min, x_max, n)
y_fit = fit_fn(x_fit)
q=z=[-2,5]
scat=pl.plot(x,y, 'o', x_fit,y_fit, '-r', z, q, 'g' )
Run Code Online (Sandbox Code Playgroud) 我有一个带有两个数据集的图,它产生一个轻微的梯度,其中最佳拟合的曲线可能是过度绘制的.
目前我只是设法得到最合适的直线.我理解scipy.optimize.curve_fit应该能够帮助我,但这需要我知道我想要过度绘制的功能(我认为).
以下是我的代码和图表.如何为这些数据集创建曲线图?
plt.figure(figsize=(15,6.6))
pl.subplot(1,2,1)
plt.plot(gg,AA, 'kx')
plt.xlabel('x')
plt.ylabel('y')
plt.gca().invert_yaxis()
y=AA
x=gg
fit=pl.polyfit(x,y,1)
#slope, fit_fn=pl.poly1d(fit)
fit_fn=pl.poly1d(fit)
scat=pl.plot(x,y, 'kx', x,fit_fn(x), '-b' )
pl.subplot(1,2,2)
pl.plot(LL,pp, 'kx')#shows points with no removal or bestfit
plt.gca().invert_yaxis()
plt.savefig('1.jpg')
plt.show()
Run Code Online (Sandbox Code Playgroud)

应该注意的是,可能没有曲线,但我想发现是否有适合的曲线.
我正在从文本文件中读取数组并希望消除某个值下的数据,但我也想知道它们在已删除值的数组中的位置,因此我可以使用它来删除其他数据.如果数据低于某个值,我的代码将删除数据但是如何找到已删除的数据的标记?
y=np.genfromtxt('01_temp.txt').T[0]
b=np.std(y)
c=np.mean(y)
low=c-b
high=c+b
x=[i for i in y if i>low]
print x
Run Code Online (Sandbox Code Playgroud)
我认为波纹管代码也和上面一样
y=np.genfromtxt('01_temp.txt').T[0]
b=np.std(y)
c=np.mean(y)
low=c-b
high=c+b
ok=y>low
y[ok]=low
Run Code Online (Sandbox Code Playgroud)
如何找到超出我设定范围的值的索引?
例如,如果我的列表是[5,5,8,9,0,10,3]和低= 4我想返回下面的索引4,对于这种情况将是[4,6]
我希望能够为目录中的所有.dat文件执行这些简单的命令.所以它会打印出每个文件的所有最大值,我只是想弄清楚如何去做.
dr='/home/data/'
image='*.dat'
b=np.genfromtxt(dr+image).T[1] #luminsity
q=getmax(b)
print 'max b=', q
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用matplotlib函数对某些数据进行PCA分析,但是当我运行它并尝试打印结果时,会将其打印为结果
import numpy as np
import os
import matplotlib
from matplotlib.mlab import PCA
x=np.zeros((62,2))
a=np.genfromtxt('1.txt').T[3] #list 62numbers
#print a
x[:,0]=a
print x[:,0]
b=np.genfromtxt('2.txt').T[3] #list 4numbers
x[:,1]=b
#print x
results=PCA(x)
print results
Run Code Online (Sandbox Code Playgroud)
得到打印的结果是0xffa4ee6c上的matplotlib.mlab.PCA实例为什么会这样?