小编Jon*_*nny的帖子

使用PyPy运行Python程序?

我被告知你可以使用PyPy来运行Python程序,因为它是使用JIT编译器编译而不是解释而快得多.

以下程序找到数字600851475143的最大素数因子:

import numpy as np

nr = 600851475143
n = 2

while n <= np.sqrt(nr):
    if nr%n == 0:
        nr = nr/n
    n += 1
print(nr)
Run Code Online (Sandbox Code Playgroud)

使用PyPy运行它的程序是什么?

我知道他们的网站上有文档,但我不明白,并希望进行演示.

python pypy

12
推荐指数
1
解决办法
9349
查看次数

Python中Matplotlib的完全自定义图例

我使用Matplotlib基本上绘制'图片',而不是绘制数据.

在'图片'中,我plt.annotate用来标记图片的某些部分.

我现在想要制作一个完全自定义的图例来表示符号的含义.

有没有一种方法来定义自定义handleslabels,其中handles必须是字母数字字母代替正常的标志像'*''o'.

这是可能的还是我必须手动构建图例plt.annotation

python plot matplotlib

7
推荐指数
1
解决办法
7755
查看次数

可以将Python设为静态类型吗?

我知道Python主要比fortran和c / c ++等语言慢,因为它是解释而不是编译的。

我也读过的另一个原因是它很慢,因为它是动态类型的,即您不必声明变量类型,而是自动声明它。这非常好,因为它使代码看起来更简洁,而且您基本上不必太担心变量类型。

我知道这样做的理由不是很好,因为您可以包装例如。使用Python编写的fortran代码,但是是否可以手动覆盖Python的这种动态类型化性质并手动声明所有变量类型,从而提高Python的速度?

python

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

从Notepad ++运行MATLAB脚本

有没有办法从Notepad ++运行MATLAB脚本?

显然我的计算机上安装了MATLAB.我知道你可以设置一个路径,当你按F5时Notepad ++运行,但是当我设置这个路径到我的MATLAB.exe文件时,它只是打开另一个MATLAB实例.

这不是我想要的,我希望Notepad ++中的实际脚本在已经打开并运行的MATLAB实例中执行.

matlab notepad++

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

在Python中生成三维高斯分布

我想在Python中生成高斯分布,x和y维度表示位置,z维度表示某个数量的大小.

分布的最大值为2e6,标准差sigma = 0.025.

在MATLAB中,我可以这样做:

x1 = linspace(-1,1,30);
x2 = linspace(-1,1,30);

mu = [0,0];
Sigma = [.025,.025];

[X1,X2] = meshgrid(x1,x2);
F = mvnpdf([X1(:) X2(:)],mu,Sigma);
F = 314159.153*reshape(F,length(x2),length(x1));
surf(x1,x2,F);
Run Code Online (Sandbox Code Playgroud)

在Python中,到目前为止我所拥有的是:

x = np.linspace(-1,1,30)
y = np.linspace(-1,1,30)

mu = (np.median(x),np.median(y))

sigma = (.025,.025)
Run Code Online (Sandbox Code Playgroud)

有一个Numpy函数numpy.random.multivariate_normal可以和MATLAB的mvnpdf一样,但我很难找到文档.特别是在获得numpy.random.multivariate_normal所需的协方差矩阵时.

python numpy gaussian

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

不均匀间隔点之间的直观插值

我有以下图表,我想使用Python和Matplotlib将数字化为高质量的出版物等级数字:

在此输入图像描述

我使用数字化程序从3个数据集中的一个中获取一些样本:

x_data = np.array([
1,
1.2371,
1.6809,
2.89151,
5.13304,
9.23238,
])

y_data = np.array([
0.0688824,
0.0490012,
0.0332843,
0.0235889,
0.0222304,
0.0245952,
])
Run Code Online (Sandbox Code Playgroud)

我已经尝试了3种不同的方法来拟合这些数据点的曲线.第一种方法是使用通过点绘制样条曲线scipy.interpolate import spline

这导致(将实际数据点绘制为蓝色标记):

在此输入图像描述

这显然没有好处.

我的第二次尝试是使用一系列不同的顺序polinimials绘制曲线拟合scipy.optimize import curve_fit.即使是四阶多项式,答案也是无用的(较低阶的更无用):

在此输入图像描述

最后,我曾经scipy.interpolate import interp1d尝试在数据点之间进行插值.线性插值显然会产生预期的结果,但线条是直的,本练习的目的是获得一条漂亮的平滑曲线:

在此输入图像描述

如果我然后使用三次插值我得到一个rubish结果,但是二次插值会产生稍微好一点的结果:

在此输入图像描述

但它还没有完全存在,我认为interp1d不能进行更高阶的插值.

有没有人有一个很好的方法这样做?也许我会尝试在IPE或其他什么方面做得更好?

谢谢!

python interpolation matplotlib scipy

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

虽然不是很有经验,但我对科学编程很感兴趣.与MATLAB相比,Python是一个不错的选择吗?

我是工程专业的研究生,我开始意识到技能编程对我的职业有多重要.在本科研究中,我们被介绍到MATLAB(实际八度),我曾经认为这是要走的路,但我一直在做一些研究,似乎科学界开始转向Python,通过它的numpy和scipy包裹,以惊人的速度.

我觉得我正处于"编程之旅"的开始阶段,并且几次被告知我应该选择一种语言并坚持下去.

我基本上已经决定要转移到Python,但是我想对我的决定有一些明智的意见吗?

我不打算开始一个MATLAB与Python风格的线程,因为这只会导致人们将他们的意见作为事实,我知道这不是这个论坛的风格.我只是在寻找验证,从MATLAB到Python的转变对于我这个位置的人来说是一个好主意.

PS我知道Python是免费的,MATLAB很昂贵,但这并不足以让我做出这个决定.

python matlab numpy scipy

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

在Python中将matplotlib视图设置为与xy平面垂直

此处的代码是3d表面图的示例:

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
        linewidth=0, antialiased=False)
ax.set_zlim(-1.01, 1.01)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

fig.colorbar(surf, shrink=0.5, aspect=5)

plt.show()
Run Code Online (Sandbox Code Playgroud)

和收益率

在此输入图像描述

有没有办法设置绘图视图,使其与xy轴完全垂直?这基本上将3-d曲线转换为2-d曲线,您可以使用颜色图来判断z变量的大小,而不是从z = 0基准位移.

python matplotlib

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

使用 Matplotlib 绘制网格

我想在 Python 中使用 Matplotlib 绘制一个自指定的网格。

我知道这个np.meshgrid函数,可以用它来获取我想要连接的不同点的数组,但我不确定如何绘制网格。

代码示例:

x = np.linspace(0,100,100)
y = np.linspace(0,10,20) 
xv, yv = np.meshgrid(x, y)
Run Code Online (Sandbox Code Playgroud)

现在,我如何绘制这个xv数组的网格?

python matplotlib

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

在Python中计算旋转曲面的体积

我有以下曲线:

在此输入图像描述

曲线由一组数据点定义.

如果围绕水平轴旋转360度,我该如何计算该曲线所包围的体积?

我可以使用数值积分计算曲线下面的区域,例如np.trapz,但我不确定下一步该做什么.

python numpy calculus

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