小编Nei*_*ein的帖子

如何使用 SciPy 统一重新采样非均匀信号?

我有一个(x, y)采样率不均匀的信号x。(采样率大致与 1/x 成正比)。我尝试使用scipy.signalresample函数统一重新采样它。根据我从文档中的理解,我可以将以下参数传递给它:

scipy.resample(array_of_y_values, number_of_sample_points, array_of_x_values)

它会返回数组

[[resampled_y_values],[new_sample_points]]

我希望它返回一个均匀采样的数据,其形式与原始数据大致相同,具有相同的最小值和最大值x。但它没有:

# nu_data = [[x1, x2, ..., xn], [y1, y2, ..., yn]] 
# with x values in ascending order

length = len(nu_data[0])
resampled = sg.resample(nu_data[1], length, nu_data[0])

uniform_data = np.array([resampled[1], resampled[0]])

plt.plot(nu_data[0], nu_data[1], uniform_data[0], uniform_data[1])
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 蓝色:nu_data橙色:uniform_data

它看起来没有改变,并且 x 比例也已调整大小。如果我尝试修复范围:自己构建所需的统一 x 值并使用它们,则失真仍然存在:

length = len(nu_data[0])
resampled = sg.resample(nu_data[1], length, nu_data[0])
delta = (nu_data[0,-1] - nu_data[0,0]) / length
new_samplepoints …
Run Code Online (Sandbox Code Playgroud)

python signal-processing numpy scipy python-3.x

9
推荐指数
1
解决办法
5672
查看次数

为什么我的Python PIL导入不起作用?

当我使用PIL时,我必须导入大量的PIL模块.我正在尝试三种方法来做到这一点,但只有最后一种方法有效,尽管对我来说都是合乎逻辑的:

导入完整的PIL并在代码中调用它的模块:NOPE

>>> import PIL
>>> image = PIL.Image.new('1', (100,100), 0) 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'Image'
Run Code Online (Sandbox Code Playgroud)

从PIL导入所有内容:NOPE

>>> from PIL import *
>>> image = Image.new('1', (100,100), 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Image' is not defined 
Run Code Online (Sandbox Code Playgroud)

从PIL导入一些模块:好的

>>> from PIL import Image
>>> image = Image.new('1', (100,100), 0)
>>> image
<PIL.Image.Image image mode=1 size=100x100 at 0xB6C10F30>
>>> # …
Run Code Online (Sandbox Code Playgroud)

python import python-import python-3.x pillow

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

在课堂的每一种方法中都能获得同样的期望

我,一个初学者,正在研究一个简单的基于卡的GUI.用Python编写.有一个基类,除其他外,包括所有卡的词汇,如_cards = {'card1_ID': card1, 'card2_ID': card2}.GUI上的卡由其唯一ID引用.

由于我打算为其他初学者制作代码avabile,我想明确告知他们是否提供了不存在的卡ID(而不是抛出KeyError).现在我有大量重复的try-expect子句让我怀疑:

部分代码,没有尝试捕获的单行方法:

def shift(self, card_ID, amount):
        """Moves the card by the given amount of pixels.
            :param amount: the horizontal and vertical amount of shifting in pixels; tuple"""

        try:
            self._cards[card_ID].shift(amount)
        except KeyError:
            raise ValueError("Invaild card ID")


    def align(self, card_ID, horizontal, vertical):
        """Aligns the card to the given position."""

        try:
            card = self._cards[card_ID]
            card.align(horizontal, vertical)
        except KeyError:
            raise ValueError("Invaild card ID") 


    def invert(self, card_ID):
        """Inverts the card's colour"""

        try:
            self._cards[card_ID].invert()
        except KeyError:
            raise ValueError("Invaild …
Run Code Online (Sandbox Code Playgroud)

python exception-handling exception python-3.x

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

使用 scipy.signal.argrelextrema 同时查找局部最小值和最大值

我想在数组中同时找到局部最小值和最大值。我尝试使用 Scipy 的 argrelextrema,但没有找到有关所需比较器函数的任何文档。我试图自己写,但没有成功。我怎么能这样做?

我想这样做,但只调用argrelextrema一次而不是用argrelminand迭代数据两次argrelmax,因为我的数据很长,我必须用它多次执行此操作:

   import numpy as np
   import scipy.signal as sg

   data = [[xes], [ys]]   #a long 2d array
   max_places = np.array(sg.argrelmax(data[1]))[0] 
   min_places = np.array(sg.argrelmin(data[1]))[0]
   extrema_places = np.contantenate((max_places, min_places))
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

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

递归是不是一般的坏习惯?

我一直认为让你的代码不易被追随而且可以避免的事情被认为是不好的做法.递归似乎是这些事情中的一个(更不用说它可能导致堆栈溢出等问题),所以当我们必须在编程课程中学习认真对待它时我感到有点惊讶(因为它偶尔导致更短码).在我看来,教授之间也存在分歧......

人们已经问过这个特定于语言的东西(比如Python,评论将其与goto语句进行比较),主要针对一个问题,但我对一般情况感兴趣:

在现代编程中,递归是否被视为不良实践?什么时候应该避免,有什么情况不可以的?


相关问题我发现:

递归是一个特征吗?(不讨论它是好还是坏)
递归是否比循环更快?(答案描述了递归可以导致函数式语言的改进,但在其他语言中却很昂贵),还有其他讨论性能的问题

recursion

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

使用numpy的Python差异化不会产生预期的输出

所以,我正在进行一些数值计算.我已计算出一个函数(return_times)的大约100,000个点只能用数字计算,现在想用它来推导它numpy.gradient.据我所知(doc),对于f(x),我可以给出以下参数:numpy.gradient(arr_of_fx_datapoints, arr_of_their_x_values)使它工作.这就是我(打算)做的事情.

除了它不起作用.结果几乎(但不完全)到处都是零.下面我的代码摘要复制了这个bug(sin ^ 2(x)的形状与我原来的函数相似):

import matplotlib.pyplot as plt
import numpy as np

def find_times(t_arr):
    return np.power(np.sin(t_arr), 2)

t_0 = 0
t_max = np.pi-1E-10
datapoints = 100000

dt = (t_max - t_0) / datapoints
t_points = np.arange(t_0, t_max, dt, dtype=np.float64)
return_times = find_times(t_points)
gd = np.gradient(return_times, t_points)
plt.plot(t_points, gd)
plt.plot(t_points, return_times)
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果令人失望:
在此输入图像描述

如果我打印gd,它表明它确实不是真正的零:

[             inf   6.28318530e-05   6.28318529e-05 ...,  -1.25666419e-09
  -6.28326813e-10  -3.14161265e-10]
Run Code Online (Sandbox Code Playgroud)

那么:我错过了什么?在Python中用数字衍生的最终正确方法是什么?

环境:Linux Mint 18.2 OS,Geany编辑器,NumPy 1.11.0.

python math numpy derivative

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

带元组的typedef如何工作?

我们在家庭作业计划中得到了这种类型的参数.作为程序员菜鸟,我以前没有看到过这样的东西.这是否意味着任何DoubleFunction2D实际上是(双,双)的2元组?

程序:

类型定义:

typedef double (*DoubleFunction)    (double);      
typedef double (*DoubleFunction2D)  (double, double);    
typedef double (*DoubleFunction3D)  (double, double, double);
Run Code Online (Sandbox Code Playgroud)

示例用法
(我的任务的WIP解决方案,尚未编译/测试.内部):

double expf2D(double x, double y)
 {
     double r = sqrt(pow(x,2) + pow(y,2));
     return my_expf(r);
 }

double DiskMonteCarloIntegrator(DoubleFunction2D f, double r1, double r2, int N)
{
    bool is_inside_ring(double x, double y){
        return is_inside_ellipse(x, y, r2/2, r2/2) && !(is_inside_ellipse(x, y, r1/2, r1/2));
    }
    int i=0;
    double x, y, sum = 0;
    while(i < N)
    {   
        x = RandomDouble(-1*r1, r1);
        y = RandomDouble(-1*r1, …
Run Code Online (Sandbox Code Playgroud)

c typedef type-definition

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

是否可以添加getchar(); 相当于.o文件?

我刚才创建了一个简单的C程序.它是一个简单的命令行生成器,可以获取一些数字,打印结果并停止.我总是在编辑器的命令行环境中运行它,在程序运行后自动暂停,所以我省略了getchar()在最后添加一个.

我现在后悔这一点,因为我设法失去了源头.我现在所拥有的只是编译的.o和.exe文件,后者 - 当然 - 在打印输出后立即退出,因此它无法使用.它不是那么长,大约100行,但我想避免重写它.(另外,我甚至可能通过这种方式学到新东西.)

现在我对C语言有了非常基本的了解,并且在计算机程度x86汇编方面几乎为零(虽然我学会了8086组装微控制器的基础知识,但现在我认为它不会有用),所以我有点卡在这里.我可以添加getchar()像暂停函数到编译代码,或者有什么方法可以使.exe在退出之前停止,同时仍保持独立?

该程序将在Windows 10系统上运行.

c assembly x86-64 getchar pause

-1
推荐指数
1
解决办法
67
查看次数