小编Tom*_*gal的帖子

如何在Python中推断曲线?

我有一些数据如下图所示,

在此输入图像描述

我能够插入数据点(虚线),并期待在两个方向上推断它们.

如何使用NumPy/SciPy在Python中推断这些曲线?

我用于插值的代码如下,

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate

x = np.array([[0.12, 0.11, 0.1, 0.09, 0.08],
              [0.13, 0.12, 0.11, 0.1, 0.09],
              [0.15, 0.14, 0.12, 0.11, 0.1],
              [0.17, 0.15, 0.14, 0.12, 0.11],
              [0.19, 0.17, 0.16, 0.14, 0.12],
              [0.22, 0.19, 0.17, 0.15, 0.13],
              [0.24, 0.22, 0.19, 0.16, 0.14],
              [0.27, 0.24, 0.21, 0.18, 0.15],
              [0.29, 0.26, 0.22, 0.19, 0.16]])


y = np.array([[71.64, 78.52, 84.91, 89.35, 97.58],
              [66.28, 73.67, 79.87, 85.36, 93.24],
              [61.48, 69.31, 75.36, 81.87, 89.35], …
Run Code Online (Sandbox Code Playgroud)

python numpy graph scipy extrapolation

6
推荐指数
1
解决办法
7372
查看次数

如何在Python中应用Box-Cox转换?

我有以下形式的数据:

X   Y
3.53    0
4.93    50
5.53    60
6.21    70
7.37    80
9.98    90
16.56   100
Run Code Online (Sandbox Code Playgroud)

我想找出n,以便这适合表格的功能:

在此输入图像描述

我试图通过Box-Cox转换确定n.如何在Python中完成?

python numpy curve-fitting scipy

6
推荐指数
1
解决办法
2万
查看次数

如何设置axvlines使用matplotlib中axes.color_cycle的相同颜色?

我在matplotlibrc文件的axes.color_cycle中设置了以下颜色.当我绘制线条和步骤时,它工作正常.但是当我使用它来绘制带有axvline的垂直线时,它不会使用设置的颜色,如图所示:

在此输入图像描述

它使用matplotlib的默认颜色.如何让axvline继续颜色循环?

可重现的代码

import numpy as np
import matplotlib.pyplot as plt
import itertools

m = 5
n = 5

x = np.zeros(shape=(m, n))
plt.figure(figsize=(5.15, 5.15))
plt.clf()
plt.subplot(111)
marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))
ax = plt.gca()
for i in range(1, n):
    x = np.dot(i, [1, 1.1, 1.2, 1.3])
    y = x ** 2
    color = next(ax._get_lines.color_cycle)
    plt.plot(x, y, linestyle='', markeredgecolor='none', marker=marker.next(), color=color, label = str(i))
    plt.plot(x, y, linestyle='-', color = color)
plt.axvline(2.)
plt.axvline(3.)
plt.axhline(4.)
plt.axhline(6.)
plt.ylabel(r'y', …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib

6
推荐指数
1
解决办法
1425
查看次数

Gitlab中的文件夹?

我试图通过Web界面在Gitlab中创建文件夹.我能够看到一些 带文件夹的存储库.我找不到创建此类文件夹的任何选项.这些文件夹是如何创建的?

directory gitlab

5
推荐指数
1
解决办法
4123
查看次数

如何在Python中索引嵌套列表?

我有一个嵌套列表,如下所示:

A = [('a', 'b', 'c'),
     ('d', 'e', 'f'),
     ('g', 'h', 'i')]
Run Code Online (Sandbox Code Playgroud)

我试图使用代码打印每个列表的第一个元素:

A = [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]
print A[:][0]
Run Code Online (Sandbox Code Playgroud)

但我得到以下输出:

('a', 'b', 'c')
Run Code Online (Sandbox Code Playgroud)

所需输出:

('a', 'd', 'g')
Run Code Online (Sandbox Code Playgroud)

如何在Python中获得此输出?

python nested-lists

5
推荐指数
1
解决办法
239
查看次数

如何让箭头在Python的指定坐标处开始/结束?

我试图使用matplotlib的注释在两端绘制带箭头的线条.但是当我绘制它们时,箭头头不会在指定的坐标处开始或结束,如图所示.提示应该以0.6和0.8开始和结束,但它们不会.

在此输入图像描述

可重现的代码

import matplotlib.pyplot as plt
fig = plt.figure(figsize = (5, 5))
plt = plt.subplot(111)
plt.axvline(0.6)
plt.axvline(0.8)
plt.axhline(0.6)
plt.axhline(0.8)

plt.annotate('', xy = (0.6, 0.33),  xycoords = 'axes fraction', \
    xytext = (0.8, 0.33), textcoords = 'axes fraction', fontsize = 7, \
    color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->'))

plt.annotate('', xy = (0.33, 0.6),  xycoords = 'axes fraction', \
    xytext = (0.33, 0.8), textcoords = 'axes fraction', fontsize = 7, \
    color = '#303030', arrowprops=dict(edgecolor='black', arrowstyle = '<->'))

fig.savefig('arrow_head.pdf')
Run Code Online (Sandbox Code Playgroud)

为什么会这样?以及如何获得在相应坐标处开始或结束的提示?

python plot matplotlib

5
推荐指数
1
解决办法
2910
查看次数

如何在Python中拟合双高斯分布?

我试图使用Python 获得数据(链接)的双高斯分布.原始数据的格式如下:

在此输入图像描述

对于给定的数据,我想获得图中所示峰值的两个高斯分布.我尝试使用以下代码(源代码):

from sklearn import mixture
import matplotlib.pyplot
import matplotlib.mlab
import numpy as np
from pylab import *
data = np.genfromtxt('gaussian_fit.dat', skiprows = 1)
x = data[:, 0]
y = data[:, 1]
clf = mixture.GMM(n_components=2, covariance_type='full')
clf.fit((y, x))
m1, m2 = clf.means_
w1, w2 = clf.weights_
c1, c2 = clf.covars_
fig = plt.figure(figsize = (5, 5))
plt.subplot(111)
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)
fig.savefig('gaussian_fit.pdf')
Run Code Online (Sandbox Code Playgroud)

但我无法获得所需的输出.那么,如何在Python中获得双高斯分布?

更新

我能够使用以下代码拟合单个高斯分布:

import pylab …
Run Code Online (Sandbox Code Playgroud)

python numpy gaussian scipy scikit-learn

4
推荐指数
1
解决办法
7391
查看次数

如何在Python中缩进pprint?

我正在尝试缩进pprint的输出,以便使用pprint获得8个空格的缩进。我使用的代码是:

import numpy as np
from pprint import pprint
A = np.array([1, 2, 3, 4])
f = open("log.txt", 'w')
n = 2
for i in range(n):
    A = A + 1
    f.writelines(list(u'    \u27B3 - %s\n'.encode('utf-8') % i for i in A))
    pprint(globals())
Run Code Online (Sandbox Code Playgroud)

输出量

import numpy as np
from pprint import pprint
A = np.array([1, 2, 3, 4])
f = open("log.txt", 'w')
n = 2
for i in range(n):
    A = A + 1
    f.writelines(list(u'    \u27B3 - %s\n'.encode('utf-8') % i for …
Run Code Online (Sandbox Code Playgroud)

python pretty-print indentation pprint

3
推荐指数
1
解决办法
2544
查看次数

如何定量测量SciPy的适合度?

我想找出最合适的数据.我做的是循环遍历各种n值并使用公式((y_fit - y_actual)/ y_actual)x 100计算每个p的残差.然后我计算每个n的平均值,然后找出最小残差均值和相应的n值并使用此值拟合.可重现的代码包括:

import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize   

x = np.array([12.4, 18.2, 20.3, 22.9, 27.7, 35.5, 53.9])
y = np.array([1, 50, 60, 70, 80, 90, 100])
y_residual = np.empty(shape=(1, len(y)))
residual_mean = []

n = np.arange(0.01, 10, 0.01)

def fit(x, a, b):
    return a * x + b
for i in range (len(n)):
    x_fit = 1 / np.log(x) ** n[i]
    y_fit = y
    fit_a, fit_b = optimize.curve_fit(fit, x_fit, y_fit)[0]
    y_fit = …
Run Code Online (Sandbox Code Playgroud)

python numpy mathematical-optimization curve-fitting scipy

2
推荐指数
1
解决办法
5549
查看次数

如何在matplotlib中将次轴图布置在主轴图之下?

我正在尝试在两个y轴上绘制两条曲线,如图所示。但是即使我将红色图(压力)的zorder设置为1和2,绿色图(针升力)也会绘制在主轴图上方。

在此处输入图片说明

我使用的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import ticker as tick
data = np.genfromtxt("secondary_axis.dat", skiprows = 2, delimiter = ',')
time = data[:, 0]
pressure = data[:, 1] * 0.006894759086775369
pressure_charge = data[0, 0]
needle_lift = data[:, 2]
figure = plt.figure(figsize=(5.15, 5.15))
figure.clf()
plot = plt.subplot(111)
plot.plot(time, pressure, label = r'\textit{Raw}', zorder = 2)
plot.set_xlabel(r'\textit{X}', labelpad=6)
plot.set_ylabel(r'\textit{Y}', labelpad=6)
primary_ticks = len(plot.yaxis.get_major_ticks())
ax2 = plot.twinx()
ax2.plot(time, needle_lift, color='#4DAF4A', zorder = 1)
ax2.grid(False)
ax2.set_ylabel(r'\textit{Z}', labelpad=6)
ax2.yaxis.set_major_locator(tick.LinearLocator(primary_ticks))
plt.show() …
Run Code Online (Sandbox Code Playgroud)

python plot matplotlib

2
推荐指数
2
解决办法
2498
查看次数

如何更改图例字体而不影响matplotlib中的其他参数?

我试图通过按照此处给出的步骤定义全局函数来更改图例的字体.使用的代码是:

import numpy as np
import matplotlib.pyplot as plt
import itertools
import matplotlib
import matplotlib.font_manager as font_manager

path = 'palatino-regular.ttf'
prop = font_manager.FontProperties(fname=path)

def change_matplotlib_font():
    figures = [x for x in matplotlib._pylab_helpers.Gcf.get_all_fig_managers()]
    for figure in figures:
        for ax in figure.canvas.figure.get_axes():
            ax.legend(prop = prop)
            for label in ax.get_xticklabels():
                label.set_fontproperties(prop)
            for label in ax.get_yticklabels():
                label.set_fontproperties(prop)


m = 5
n = 5

x = np.zeros(shape=(m, n))
plt.figure(figsize=(5.15, 5.15))
plt.clf()
plt.subplot(111)
marker = itertools.cycle(('o', 'v', '^', '<', '>', 's', '8', 'p'))
ax …
Run Code Online (Sandbox Code Playgroud)

python fonts matplotlib

2
推荐指数
1
解决办法
2367
查看次数

如何检测图像中的圆形区域并用 Python 将其居中?

我有一个如下所示的图形火焰:

在此处输入图片说明

我试图检测相机视图的外边缘并将图形居中,以便火焰的圆形视图正好位于绘图的中心。因为圆圈的位置可能会随着图像拍摄日期而变化。有时可能在上半部分,有时可能在下半部分,等等。

Python 中是否有任何模块可以检测视图并将其居中?

可重现的代码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
img=mpimg.imread('flame.png')
lum_img = img[:,:,0]
img_plot = plt.imshow(lum_img)
img_plot.set_cmap('jet')
plt.axis('Off')
plt.show()
Run Code Online (Sandbox Code Playgroud)

python image-processing matplotlib scikit-image

0
推荐指数
1
解决办法
2286
查看次数