让我们采用一个简单的函数,它接受一个str并返回一个数据帧:
import pandas as pd
def csv_to_df(path):
return pd.read_csv(path, skiprows=1, sep='\t', comment='#')
Run Code Online (Sandbox Code Playgroud)
为此函数添加类型提示的推荐pythonic方法是什么?
如果我向python询问它返回的DataFrame的类型pandas.core.frame.DataFrame.以下内容不起作用,因为它会告诉我大熊猫没有定义.
def csv_to_df(path: str) -> pandas.core.frame.DataFrame:
return pd.read_csv(path, skiprows=1, sep='\t', comment='#')
Run Code Online (Sandbox Code Playgroud) 我一直认为比较是计算机可以执行的最快的操作.我记得在D. Knuth的演讲中听到它,他在那里按降序编写循环"因为与0的比较很快".我还读到乘法应该比这里的加法慢.
我很惊讶地看到,在Python 2和Mac下,在Linux和Mac下都进行了测试,比较似乎比算术运算慢得多.
谁有人解释为什么?
%timeit 2 > 0
10000000 loops, best of 3: 41.5 ns per loop
%timeit 2 * 2
10000000 loops, best of 3: 27 ns per loop
%timeit 2 * 0
10000000 loops, best of 3: 27.7 ns per loop
%timeit True != False
10000000 loops, best of 3: 75 ns per loop
%timeit True and False
10000000 loops, best of 3: 58.8 ns per loop
Run Code Online (Sandbox Code Playgroud)
并在python 3下:
$ ipython3
Python 3.5.2 | packaged …Run Code Online (Sandbox Code Playgroud) 我已经下载了find自制的GNU版本:
brew install findutils --with-default-names
Run Code Online (Sandbox Code Playgroud)
当我继续奔跑时which,find我得到了我的期望:
$ which find
/usr/local/bin/find
Run Code Online (Sandbox Code Playgroud)
但是,当我使用时find,系统会回退到OS X默认值/usr/bin/find,即:
$ find -exec file {} \;
find: illegal option -- e
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
$ /usr/local/bin/find -exec file {} \;
.: directory
Run Code Online (Sandbox Code Playgroud)
为什么会这样,我怎样才能find正常工作?
是否有一个单线程(或简单的无环路)解决方案,通过偶数和奇数索引对矢量进行排序?例:
long entries[] = {0,1,2,10,11}; // indices 0 1 2 3 4
std::vector<long> vExample(entries, entries + sizeof(entries) / sizeof(long) );
vExample.sortEvenOdd(vExample.begin(),vExample.end()); // magic one liner I wish existed...
for (int i = 0; i < vExample.size(); i++)
{
std::cout << vExample[i] << " ";
}
Run Code Online (Sandbox Code Playgroud)
现在我想得到以下输出:
0 2 11 1 10 // corresponding to indices 0 2 4 1 3
Run Code Online (Sandbox Code Playgroud) 我的问题是:
如何设置REPL打印输出的精度?
举个例子,这个简单的函数在这里:
(defun gaussian (rows cols sigma)
(let ((filter (make-array `(,rows ,cols)))
(rowOffset (/ (- rows 1) 2.0))
(colOffset (/ (- cols 1) 2.0)))
(loop for i from 0 to (- rows 1)
do (loop for j from 0 to (- cols 1)
do (setf (aref filter i j)
(gaussDistVal i j rowOffset ColOffset sigma))))
filter))
Run Code Online (Sandbox Code Playgroud)
如果我打电话(gaussian 5 5 1),我的输出如下:
#2A((0.01831564 0.082085 0.13533528 0.082085 0.01831564)
(0.082085 0.36787945 0.60653067 0.36787945 0.082085)
(0.13533528 0.60653067 1.0 0.60653067 0.13533528)
(0.082085 0.36787945 …Run Code Online (Sandbox Code Playgroud) 我有一些我想修复的损坏的JSON文件.问题是其中一个字段AcquisitionDateTime格式不正确:
{
"AcquisitionDateTime": 2016-04-28T17:09:39.515625,
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将值包装在括号内.我可以用正则表达式轻松地做到这一点:
perl -pi -e 's/\"AcqDateTime\": (.*),/\"AcqDateTime\": \"\1\",/g' t.json
Run Code Online (Sandbox Code Playgroud)
现在,我想扩展正则表达式,以便在JSON没有被破坏的情况下,内容不会在""中被包装两次.我面临的问题是我不知道如何混合前瞻,if/then语句和捕获组.这是我的尝试:
Lookahead, if you find a ", then capture what is between it. Else capture everything.
perl -pi -e 's/\"AcqDateTime\": (?(?=\")\"(.*)\"|(.*)),/\"AcqDateTime:\" \"\1\",/g' t.json
Run Code Online (Sandbox Code Playgroud)
这是我有兴趣纠正的部分:
Lookahead for a \" -> if yes, then capture without it. \"(.*)\" Else capture all (.*)
(?(?=\")\"(.*)\"|(.*)),
Run Code Online (Sandbox Code Playgroud)
有人会向我解释我做错了什么吗?
提前致谢.
我今天已经下载了Pharo,我注意到大多数键绑定在语言环境中不起作用.有没有办法让标准的Mac/Linux键绑定工作?
我在Google上找不到任何答案.
如果有人能告诉我如何配置标准,我会很感激
Ctrl+a, BeginningOfLine
Ctrl+e, EndOfLine
Ctrl+d, forwardDelete
Ctrl+f, forwardChar
Ctrl+b, backwardChar
Ctrl+n, nextLine
Ctrl+p, previousLine
Run Code Online (Sandbox Code Playgroud)
在Pharo 5.0上工作.
我想抓住年龄,出生地和以前的参议员职业.维基百科在各自的页面上提供了每个参议员的信息,还有另一个页面,其中的表格列出了所有参议员的姓名.我如何浏览该列表,点击每个参议员各自页面的链接,并获取我想要的信息?
这是我到目前为止所做的.
1.(没有python)发现DBpedia存在并编写了一个查询来搜索参议员.不幸的是,DBpedia没有对大部分(如果有的话)进行分类:
Run Code Online (Sandbox Code Playgroud)SELECT ?senator, ?country WHERE { ?senator rdf:type <http://dbpedia.org/ontology/Senator> . ?senator <http://dbpedia.org/ontology/nationality> ?country }
查询结果不令人满意.
2.发现有一个叫做python的模块wikipedia允许我从各个维基页面搜索和检索信息.用它通过查看超链接从表中获取参议员名称列表.
import wikipedia as w
w.set_lang('pt')
# Grab page with table of senator names.
s = w.page(w.search('Lista de Senadores do Brasil da 55 legislatura')[0])
# Get links to senator names by removing links of no interest
# For each link in the page, check if it's a link to a senator page.
senators = [name for name in s.links …Run Code Online (Sandbox Code Playgroud) 我在Swift 4项目中有以下代码.
class DishesTableViewController : UITableViewController {
private var token :NSKeyValueObservation?
@objc dynamic private(set) var dishes :[Dish] = []
override func viewDidLoad() {
super.viewDidLoad()
// configure the observation
token = self.observe(\.dishes) { object, change in
// change is always nil
print(object)
print(change)
}
updateTableView()
}
Run Code Online (Sandbox Code Playgroud)
每当更换餐具阵列时,都会触发观察.但我的问题是如何才能获得发生的实际更改,即如何访问触发更改的实际Dish对象?
免责声明:我使用jupyter kernel,但问题也与此有关jupyter notebook。
据称jupyter kernel --help-all,我应该能够通过设置一个名为的参数来更改jupyter内核JSON连接文件--KernelManager.connection_file。
如果我正确理解这一点,则意味着以下命令:
jupyter kernel --KernelManager.connection_file=connection.json
Run Code Online (Sandbox Code Playgroud)
应该启动一个内核,并给我一个名为connection.json的连接文件。
但是,这就是我得到的:
? jupyter kernel --KernelManager.connection_file='test-this-thing.json'
[KernelApp] Starting kernel 'python3'
[KernelApp] Connection file: /Users/me/Library/Jupyter/runtime/kernel-1e65d0fe-bf8e-1234-8208-463bd4a1234a.json
Run Code Online (Sandbox Code Playgroud)
现在,jupyter不会抱怨我传递了错误的参数,也没有传递任何东西,只是没有更改连接文件。
难道我做错了什么?如何正确更改连接文件名?