小编gg3*_*349的帖子

如何沿一个轴获取numpy数组中最大元素的索引

我有一个2维NumPy数组.我知道如何获得轴上的最大值:

>>> a = array([[1,2,3],[4,3,1]])
>>> amax(a,axis=0)
array([4, 3, 3])
Run Code Online (Sandbox Code Playgroud)

如何获得最大元素的索引?所以我想作为输出array([1,1,0])

python numpy max indices

107
推荐指数
4
解决办法
19万
查看次数

检查numpy数组是否在numpy数组列表中

我有一个numpy数组列表和一个numpy数组.我想检查单个数组是否是列表的成员.

我想有一种方法,我没有正确搜索...这就是我想出的:

def inList(array, list):
    for element in list:
        if np.array_equal(element, array):
            return True
    return False
Run Code Online (Sandbox Code Playgroud)

这个实现是否正确?这有什么功能吗?

python numpy

15
推荐指数
3
解决办法
7274
查看次数

导入numpy和Scipy包的模块/子包的差异

我通过Anaconda 2.1.0发行版使用scipy和numpy.我使用Spyder作为我的Python IDE.

当我运行时 import scipy as sp,我无法访问子包,例如optimize,linalg,cluster等sp.

但是,当我运行时import numpy as np,我能够访问其所有子包,例如linalg,random,matrixlib,polynomial,testing等np.

这两种进口是否有不同的原因?为什么不import scipy as sp抓住所有scipy子包进入sp命名空间?

python import numpy scipy

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

matplotlib 3d表面上的连续色调

在matplotlib 3D绘图中,我可以设置行/列的数量,以确定表面上可见的面的总数

s=ax.plot_surface(x,y,z, color='gray', shade=True, rstride=1,cstride=1)
Run Code Online (Sandbox Code Playgroud)

其中数字越小越好,但是面数越小.由于我也在这个表面上绘制流线/轨迹,我想摆脱脸的边缘.现在,随着

s.set_linewidth(0)
Run Code Online (Sandbox Code Playgroud)

设置较低的rstride和cstride值我几乎可以得到我想要的东西,即表面几乎连续变化的颜色,可以提供良好的3D效果.

不幸的是,线条留在那里,作为面之间的空位.有没有办法做到这一点?也许我只是错过了一个简单的命令..

编辑:生成曲面的代码很长,无法在此处报告.我附上了上面写的解决方法的结果快照.表面有白线

3d matplotlib

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

求解隐式ODE(微分代数方程DAE)

我正在尝试使用来自scipy的odeint解决二阶ODE。我遇到的问题是该函数隐式地与二阶项耦合,如简化的代码段所示(请忽略示例的假装物理学):

import numpy as np
from scipy.integrate import odeint

def integral(y,t,F_l,mass):
    dydt = np.zeros_like(y)
    x, v = y
    F_r =  (((1-a)/3)**2 + (2*(1+a)/3)**2) * v # 'a' implicit 
    a  = (F_l - F_r)/mass

    dydt = [v, a]
return dydt


y0 = [0,5]
time = np.linspace(0.,10.,21)
F_lon = 100.
mass = 1000.

dydt = odeint(integral, y0, time, args=(F_lon,mass))
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我意识到可以代数求解隐式变量,但是在我的实际场景中,逻辑之间存在很多逻辑F_ra并且代数运算的评估失败。

我相信可以使用MATLAB的ode15i函数来解决DAE ,但我尝试尽可能避免这种情况。

我的问题是-有办法解决python(最好是scipy)中的隐式ODE函数(DAE)吗?有没有更好的方法解决以上问题呢?

作为最后的选择,可以接受上a一个时间步长。dydt[1]每个时间步长后如何传递回函数?

python constraints scipy numerical-integration ode

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

一维阵列的所有循环移位的2D阵列

假设a是一些numppy.array带有n个元素的1d :

a = np.array([a_0, a_1, ..., a_n_minus_1])
Run Code Online (Sandbox Code Playgroud)

我想在第i行生成包含第i个循环移位的2d(n X n):numpy.arraya

np.array([[a_0, a_1, ..., a_n_minus_1], [a_n_minus_1, a_0, a_1, ...], ...]])
Run Code Online (Sandbox Code Playgroud)

最好没有环.如何有效地完成这项工作?

(该函数np.roll似乎相关,但显然只需要一个标量shift.)

numpy vectorization scipy

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

使用HoverTool()工具时仅显示一个工具提示

我在Bokeh中绘制了很多点,并且我已经将HoverTool添加到图的工具列表中,以便x,y鼠标在接近字形时显示鼠标的坐标.

当鼠标接近紧密堆积在一起的一组字形时,我会获得与字形一样多的工具提示.我只想要一个工具提示,一个最接近的字形.这不仅仅是一个演示细节,因为对于很多点,这会导致:

  • 在与绘图的缓慢交互中,浏览器在生成所有工具提示时卡住
  • 在一个非常长的工具提示中,相同的信息重复多次,因为许多字形都靠近光标

下面是一个示例,其中包含复制行为的代码: 在此输入图像描述

import numpy.random
from bokeh.plotting import figure, output_notebook, show
from bokeh.models import HoverTool
output_notebook()

hover = HoverTool()
hover.tooltips = [("(x,y)", "($x, $y)")]

x = numpy.random.randn(500)
y = numpy.random.randn(500)

p = figure(tools=[hover])
p.circle(x,y, color='red', size=14, alpha=0.4)

show(p)
Run Code Online (Sandbox Code Playgroud)

python tooltip bokeh

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

傅里叶或时域积分

我正在努力理解信号数值积分的问题。基本上,我有一个信号,我想将其积分或执行,并将其反导作为时间的函数(用于获取磁场的拾波线圈的积分)。我尝试了两种不同的方法,原则上应该是一致的,但事实并非如此。我正在使用的代码如下。请注意,代码中的信号 y 之前已经使用巴特沃斯滤波进行了高通滤波(类似于此处所做的http://wiki.scipy.org/Cookbook/ButterworthBandpass)。信号和时间基准可以在此处下载(https://www.dropbox.com/s/fi5z38sae6j5410/Trial.npz?dl=0

import scipy as sp
from scipy import integrate
from scipy import fftpack
data = np.load('trial.npz')
y = data['arr_1'] # this is the signal 
t = data['arr_0']
# integration using pfft
bI = sp.fftpack.diff(y-y.mean(),order=-1)
bI2= sp.integrate.cumtrapz(y-y.mean(),x=t)
Run Code Online (Sandbox Code Playgroud)

现在,这两个信号(除了可以取出的最终不同的线性趋势之外)是不同的,或者更好的是动态地它们在相同的振荡时间下非常相似,但是两个信号之间存在大约 30 的系数,在这个意义上bI2 比 bI 低 30 倍(大约)。顺便说一句,我减去了两个信号的平均值,以确保它们是零均值信号,并在 IDL 中执行积分(均具有等效的 cumsumtrapz 和傅里叶域)给出与 bI2 兼容的值。任何线索都非常受欢迎

python scipy

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