我有两个一维数组,x和y,一个比另一个小.我试图在x中找到y的每个元素的索引.
我发现了两种天真的方法,第一种是缓慢的,第二种是内存密集型.
indices= []
for iy in y:
indices += np.where(x==iy)[0][0]
Run Code Online (Sandbox Code Playgroud)
xe = np.outer([1,]*len(x), y)
ye = np.outer(x, [1,]*len(y))
junk, indices = np.where(np.equal(xe, ye))
Run Code Online (Sandbox Code Playgroud)
有更快的方式或更少的内存密集型方法吗?理想情况下,搜索将利用这样一个事实,即我们在列表中搜索的不是一件事,而是很多事情,因此稍微更适合并行化.如果您不假设y的每个元素实际上都在x中,则奖励积分.
对于Python和Numpy中的数组和列表,以下行等效:
itemlist = []
for j in range(len(myarray)):
item = myarray[j]
itemlist.append(item)
Run Code Online (Sandbox Code Playgroud)
和:
itemlist = []
for item in myarray:
itemlist.append(item)
Run Code Online (Sandbox Code Playgroud)
我对itemlist 的顺序很感兴趣.在我尝试过的一些例子中,它们是相同的,但它是否有保证?例如,我知道foreach
C#中的语句不保证顺序,我应该小心它.
我试图找出Flask交互式调试器无法正常工作的原因.我的模板应用程序是准系统,只有一个错误:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
print missing_variable #Error
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True)
Run Code Online (Sandbox Code Playgroud)
但调试器捕获错误,但给了我一个非交互式页面,并抱怨缺少Javascript:
调试器在您的WSGI应用程序中捕获了异常.您现在可以查看导致错误的回溯.如果启用JavaScript,您还可以使用其他功能,例如代码执行(如果启用了evalex功能),自动粘贴异常等等.
我没有禁用Javascript,所以我不确定为什么这个交互式调试器坏了.谢谢!
编辑:我在远程主机上运行它并通过SSH隧道查看.是否有可能以这种方式禁用Javascript?
如果我绘制一个2D数组并对其进行轮廓绘制,我可以访问分割图,cs = plt.contour(...); cs.allsegs
但它被参数化为一条线.我想要一个行内部内容的segmap布尔掩码,所以我可以快速地对该轮廓内的所有内容求和.
非常感谢!