在Cython文档的教程中,有numpy模块的cimport和import语句:
import numpy as np
cimport numpy as np
Run Code Online (Sandbox Code Playgroud)
我发现这个约定在numpy/cython用户中很受欢迎.
这看起来很奇怪的我,因为他们都命名为NP.在哪部分代码中,使用了导入/ cimported np?为什么cython编译器不会混淆它们?
我希望以有效的方式连接两个迭代器.
假设我们有两个迭代器(在Python3中)
l1 = range(10) # iterator over 0, 1, ..., 9
l2 = range(10, 20) # iterator over 10, 11, ..., 19
Run Code Online (Sandbox Code Playgroud)
如果我们将它们转换为列表,就很容易连接起来
y = list(l1) + list(l2) # 0, 1, ,..., 19
Run Code Online (Sandbox Code Playgroud)
但是,这可能效率不高.
我想做点什么
y_iter = l1 + l2 # this does not work
Run Code Online (Sandbox Code Playgroud)
在Python3中执行此操作的好方法是什么?
我使用的是 Ubuntu 16.04。
当我更新时,我收到以下消息
$ sudo apt-get update
....
E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
Run Code Online (Sandbox Code Playgroud)
根据错误消息,我尝试
$ sudo dpkg --configure -a
setting up snapd (2.14.2~16.04) ...
Run Code Online (Sandbox Code Playgroud)
然后它永远挂起。有谁知道我该如何解决这个问题?谢谢。
我有两个列表,x和y,我想要排序x并通过x排序的排列来置换y.例如,给定
x = [4, 2, 1, 3]
y = [40, 200, 1, 30]
Run Code Online (Sandbox Code Playgroud)
我想得到
x_sorted = [1,2,3,4]
y_sorted = [1, 200, 30, 40]
Run Code Online (Sandbox Code Playgroud)
正如过去的问题所讨论的,解决这个问题的一个简单方法是
x_sorted, y_sorted = zip(*sorted(zip(x,y)))
Run Code Online (Sandbox Code Playgroud)
这是我的问题:最快的方法是什么?
我有三种方法来完成任务.
import numpy as np
x = np.random.random(1000)
y = np.random.random(1000)
Run Code Online (Sandbox Code Playgroud)
方法1:
x_sorted, y_sorted = zip(*sorted(zip(x,y))) #1.08 ms
Run Code Online (Sandbox Code Playgroud)
方法2:
foo = zip(x,y)
foo.sort()
zip(*foo) #1.05 ms
Run Code Online (Sandbox Code Playgroud)
方法3;
ind = range(1000)
ind.sort(key=lambda i:x[i])
x_sorted = [x[i] for i in ind]
y_sorted = [y[i] for i in ind] #934us
Run Code Online (Sandbox Code Playgroud)
有没有比上述三种方法更快的执行方法?
其他问题.
任何人都可以做健全性检查吗?
我正在尝试在 for 循环中创建函数。我无法理解的一点总结在以下代码中:
f_list = []
for i in range(10):
f = lambda j : i
f_list.append(f)
Run Code Online (Sandbox Code Playgroud)
然后,
>>> f_list[0](0)
9 #I hope this is 0.
>>> f_list[1](0)
9 #I hope this is 1.
Run Code Online (Sandbox Code Playgroud)
为什么会这样??
我是 Lucene 的新手。我想用Python 3编写PyLucene 6.5的示例代码。我更改了该版本的示例代码。但是,我找不到几个文档,并且不确定更改是否正确。
# indexer.py
import sys
import lucene
from java.io import File
from org.apache.lucene.analysis.standard import StandardAnalyzer
from org.apache.lucene.document import Document, Field, StringField, FieldType
from org.apache.lucene.index import IndexWriter, IndexWriterConfig
from org.apache.lucene.store import SimpleFSDirectory, FSDirectory
from org.apache.lucene.util import Version
if __name__ == "__main__":
lucene.initVM()
indexPath = File("index/").toPath()
indexDir = FSDirectory.open(indexPath)
writerConfig = IndexWriterConfig(StandardAnalyzer())
writer = IndexWriter(indexDir, writerConfig)
print("%d docs in index" % writer.numDocs())
print("Reading lines from sys.stdin...")
tft = FieldType()
tft.setStored(True)
tft.setTokenized(True)
for n, l in enumerate(sys.stdin): …
Run Code Online (Sandbox Code Playgroud)