小编ins*_*nia的帖子

如何在两个数组中找到最接近的元素?

我有两个numpy数组,比如X=[x1,x2,x3,x4], y=[y1,y2,y3,y4].其中三个元素很接近,第四个元素可能接近或不接近.

喜欢:

X   [ 84.04467948  52.42447842  39.13555678  21.99846595]
y   [ 78.86529444  52.42447842  38.74910101  21.99846595]
Run Code Online (Sandbox Code Playgroud)

或者它可以是:

X   [ 84.04467948  60  52.42447842  39.13555678]
y   [ 78.86529444  52.42447842  38.74910101  21.99846595]
Run Code Online (Sandbox Code Playgroud)

我想定义一个函数来查找两个数组中的相应索引,如第一种情况:

  • y[0]对应X[0],
  • y[1]对应X[1],
  • y[2]对应X[2],
  • y[3] 相当于 X[3]

在第二种情况下:

  • y[0]对应X[0],
  • y[1]对应X[2],
  • y[2] 相当于 X[3]
  • y[3]对应于X[1].

我不能写一个完全解决问题的功能,请帮忙.

python python-2.7

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

gevent和multiprocess的区别

我正在学习如何使我的脚本运行得更快。我认为并行是一个好方法。所以我尝试了 gevent 和多处理。但我对它不同的结果感到困惑。举两个我遇到的例子

例1:

a=np.zeros([3])
def f(i):
    a[i]=1
    print a
def f_para():
    p=multiprocessing.Pool()
    p.map(f, range(3))

def f_asy():
    threads = [gevent.spawn(f, i) for i in xrange(3)]
    gevent.joinall(threads)

f_para()
[ 0.  1.  0.]
[ 0.  0.  1.]
[ 1.  0.  0.]

f_asy()
[ 1.  0.  0.]
[ 1.  1.  0.]
[ 1.  1.  1.]
Run Code Online (Sandbox Code Playgroud)

我发现使用多处理,全局对象a在 fat 中永远不会改变,并且运行后f_para()仍然a是原始数组。跑步的时候f_asy(),就不一样了,a变了。

例2:

def f2(i):
    subprocess.call(['./a.out', str(i)])
    time.sleep(0.2)

def f2_loop():
    for i in xrange(20):
        f2(i)

def f2_para(): …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing multiprocessing gevent python-2.7

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