小编ajw*_*ood的帖子

匿名函数在python中引用局部变量

如何在python中定义匿名函数,其中bahaviour应该在definiton-time取决于局部变量的值,并且还接受参数

例:

def callback(val1, val2):
   print "{0} {1}".format(val1, val2)

i = 0
f0 = lambda x: callback(i, x)
i = 1
f1 = lambda x: callback(i, x)

f0(8) # prints "1, 8: but I'd like "0, 8" (value of 'i' when f0 was defined)
f1(8) # prints "1, 8"
Run Code Online (Sandbox Code Playgroud)

这样的事情可能没有将我的回调包装在自己的类中吗?

python variables scope callback

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

基于另一个数组的内容对C数组进行排序

我正在尝试对其A元素为索引的数组进行排序.索引引用另一个数组,B其值将决定其顺序A.所以,我想对A这种情况进行排序B[ A[i] ].

例如:

A = [0, 1, 4, 5, 7]
B = [5, 3, 8, 2, 2, 7, 1, 6, 3, 9]

排序A将是

A' = [ 7, 4, 1, 0, 5 ]

这可能与C的内置排序,或者我将不得不编写自己的实现?

编辑:这些数组是局部函数变量.

c arrays sorting

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

流域连通物的图像分割

我正在尝试分离连接的对象.似乎Python和分水岭算法(scipy实现)非常适合处理这个问题.

这是我的图像和自动生成的分水岭种子点(阈值和距离变换图像的局部最大值):

seeds = myGenSeeds( image_grey )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

到现在为止还挺好; 每个物体都有种子.

当我运行分水岭时,情况会崩溃:

segmented = ndimage.measurements.watershed_ift( 255 - image_grey, seeds)`
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

顶部 - 中间集群和中心集群都很难分开.在顶部群集中,一个对象充斥着另外两个对象.在中心星团中,虽然它可能太小而无法看到,但是中心种子只能淹没到几个像素.

我有两个问题:

  1. 分水岭算法是否是分离此类对象的不错选择?
  2. 如果是这样,我是否有某种预处理方法可以使图像更适合分水岭分割?

python image-processing scipy watershed

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

从Perl Module :: Build模块编译c可执行文件

关于在Module :: Build模块中编译c代码的这个问题中,建议用它c_source来指定c/c ++源代码的位置.

此配置选项导致将源编译为目标文件,并将目录添加到链接器的搜索路径.

我想知道是否可以实现类似的配置,其中所有.c文件都编译为独立的可执行文件,并安装在bin/脚本旁边.

perl

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

如何恢复平坦的Numpy数组的原始索引?

我有一个多维numpy数组,试图将其粘贴到熊猫数据框中。我想展平数组,并创建一个反映预展平数组索引的熊猫索引。

请注意,我使用3D来缩小示例,但我想将其推广到至少4D

A = np.random.rand(2,3,4)
array([[[ 0.43793885,  0.40078139,  0.48078691,  0.05334248],
    [ 0.76331509,  0.82514441,  0.86169078,  0.86496111],
    [ 0.75572665,  0.80860943,  0.79995337,  0.63123724]],

   [[ 0.20648946,  0.57042315,  0.71777265,  0.34155005],
    [ 0.30843717,  0.39381407,  0.12623462,  0.93481552],
    [ 0.3267771 ,  0.64097038,  0.30405215,  0.57726629]]])

df = pd.DataFrame(A.flatten())
Run Code Online (Sandbox Code Playgroud)

我正在尝试生成像这样的x / y / z列:

           A  z  y  x
0   0.437939  0  0  0
1   0.400781  0  0  1
2   0.480787  0  0  2
3   0.053342  0  0  3
4   0.763315  0  1  0
5   0.825144  0  1  1
6   0.861691 …
Run Code Online (Sandbox Code Playgroud)

python numpy dataframe pandas

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

如何将Pandas查找表应用于numpy数组?

我有一个像这样的熊猫系列:

      measure
0    0.3
6    0.6
9    0.2
11   0.3
14   0.0
17   0.1
23   0.9
Run Code Online (Sandbox Code Playgroud)

和像这样的numpy数组:

array([[ 0,  0,  9, 11],
       [ 6, 14,  6, 17]])
Run Code Online (Sandbox Code Playgroud)

如何从numpy数组中的值到系列中的索引进行查找以获得:

array([[ 0.3,  0.3,  0.2, 0.3],
       [ 0.6,  0.0,  0.6, 0.1]])
Run Code Online (Sandbox Code Playgroud)

python dictionary numpy python-3.x pandas

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

在perl测试中计划死亡

有没有办法为你期望死的Perl调用编写测试?我想验证某些调用会因格式错误的输入而死亡.

sub routine_a {
   my $arg = shift;
   die if $arg eq 'FOO';
   print "routine_a: $arg\n";
}
sub routine_b {
   my $arg = shift;
   die if $arg eq 'BAR';
   print "routine_b: $arg\n";
}

sub test_all {
   assert( routine_a("blah") );
   assert( routine_b("blab") );
   assert_death( routine_a("FOO") );
   assert_death( routine_b("BAR") );
}
Run Code Online (Sandbox Code Playgroud)

testing perl unit-testing

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

获取 numpy.random 分布列表

如何获取文档中numpy.random描述的可用发行版列表?

我正在编写一个会产生噪音的命令行实用程序。我想获取每个可用的发行版,并获取它们所需的参数以生成命令行选项。

我几乎可以做这样的事情:

import numpy as np
distributions = filter( lambda elt: not elt.startswith("__"),  dir(np.random) )
Run Code Online (Sandbox Code Playgroud)

...但是这个列表包含额外的东西(例如shuffle,get_state),它们不是分布。

python random numpy

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

获取scipy.ndimage.filters.generic_filter中的当前元素

是否可以在scipy.ndimage.filters.generic_filter滤波器功能中获得"当前元素" ?

例如,如果A[0]始终包含当前元素(似乎不是这种情况),则以下内容可能会找到局部最大值

def local_max_f(A) :
   return A[0] == A.max()

img = np.random.rand(100).reshape(10,10)
ndimage.generic_filter( img, local_max_f, size=3 )
Run Code Online (Sandbox Code Playgroud)

python numpy scipy

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

如何参数化测试以在 pytest 中使用不同的装置运行?

从 pytest文档

@pytest.mark.parametrize 允许在测试函数或类中定义多组参数和装置。

看起来这意味着pytest.mark.parametrize可以将测试标记为使用多组装置运行?我可以找到很多参数化参数的例子,但我不知道如何参数化不同的装置集。

我认为这个答案很接近,但这实际上只是参数化参数,然后解决测试主体中的不同固定装置。

是否可以使用不同的夹具将测试标记为多次运行?


注意我正在尝试做这样的事情:

import pytest

# some data fixutres
@pytest.fixture()
def data1():
    """Create some data"""

@pytest.fixture()
def data2():
    """Create some different data"""

@pytest.fixture()
def data3():
    """Create yet different data"""


# The tests
@pytest.mark.parametrize('data', [data1, data2])
def test_foo(data):
    """Test something that makes sense with datasets 1 and 2"""

@pytest.mark.parametrize('data', [data2, data3])
def test_bar(data):
    """Test something that makes sense with datasets 2 and 3"""
Run Code Online (Sandbox Code Playgroud)

python pytest

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