我有两个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].我不能写一个完全解决问题的功能,请帮忙.
我正在学习如何使我的脚本运行得更快。我认为并行是一个好方法。所以我尝试了 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