我有两个相同长度的numpy数组包含二进制值
import numpy as np
a=np.array([1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0])
b=np.array([1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1])
Run Code Online (Sandbox Code Playgroud)
我想尽可能快地计算它们之间的汉明距离,因为我有数以百万计的这样的距离计算.
一个简单但缓慢的选择(取自维基百科):
%timeit sum(ch1 != ch2 for ch1, ch2 in zip(a, b))
10000 loops, best of 3: 79 us per loop
Run Code Online (Sandbox Code Playgroud)
我已经提出了更快的选项,灵感来自堆栈溢出的一些答案.
%timeit np.sum(np.bitwise_xor(a,b))
100000 loops, best of 3: 6.94 us per loop …Run Code Online (Sandbox Code Playgroud) 当我对这样的索引执行查询时:
{
"_source":["bar"] , "size":100,
"query": {
"match_all": {}
},
"filter": {
"type" : {
"value" : "foo"
}
}
}
Run Code Online (Sandbox Code Playgroud)
响应包括索引,类型等.但我已经知道索引和类型,因为我指定了它.这些信息只会膨胀json数据的大小.有没有办法从响应中排除这些?
这就是我得到的:
{
"took": 31,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 364024,
"max_score": 1,
"hits": [
{
"_index": "foo_bar",
"_type": "foo",
"_id": "asdjj123123",
"_score": 1,
"_source": {
"bar": "blablablabla"
}
}
,...
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的,所以没有类型,分数,索引的响应:
{
"took": 31,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": { …Run Code Online (Sandbox Code Playgroud) 我有两个图像。我想从一个图像中抓取一个区域(多边形,而不是矩形)并将该区域复制到另一个图像上。我怎样才能做到这一点?这是我到目前为止所拥有的。
import cv2
import numpy as np
#load two images
srcfilename = 'foo.jpg'
src1 = cv2.imread(srcfilename)
srcfilename = 'bar.jpg'
src2 = cv2.imread(srcfilename)
src1_mask = np.zeros(src1.shape[:-1])
#create a polygon for region of interest
poly = np.array([ [150,150], [200,100], [350,150], [350,200], [300,220], [200,200], [190,180] ], np.int32)
cv2.fillPoly(src1_mask, [poly], 255)
Run Code Online (Sandbox Code Playgroud)
在这一点上,我加载了两个图像,并且该区域有一个多边形和蒙版。现在我不知道如何使用这个掩码/多边形将 src1 的那部分复制到 src2 上。
#I can also create a mask that has the same number of channels (3)
src1_mask = np.zeros(src1.shape)
#create a polygon for region of interest
poly = np.array([ [150,150], …Run Code Online (Sandbox Code Playgroud) 我想为(可能很大)x计算1 /(1 + exp(x)).这是0和1之间表现良好的函数.我可以这样做
import numpy as np
1.0/(1.0+np.exp(x))
Run Code Online (Sandbox Code Playgroud)
但是在这个天真的实现中,np.exp(x)很可能只返回0或大于x的无穷大,具体取决于符号.python中是否有可以帮助我的功能?
我正在考虑实施一系列扩展和系列加速,但我想知道这个问题是否已经解决了.