小编Jam*_*mes的帖子

类和实例方法之间的区别

我正在阅读PEP 0008(样式指南),我注意到它建议使用self作为实例方法中的第一个参数,但cls是类方法中的第一个参数.

我已经使用并编写了几个类,但我从未遇到过类方法(嗯,一个将cls作为参数传递的方法).有人能告诉我一些例子吗?

谢谢!

python

58
推荐指数
1
解决办法
5万
查看次数

元素添加两个元组

我只是想知道是否有一种特殊的pythonic方式添加两个元组元素?

到目前为止(a和b是元组),我有

map(sum, zip(a, b))
Run Code Online (Sandbox Code Playgroud)

我的预期输出是:

(a[0] + b[0], a[1] + b[1], ...)
Run Code Online (Sandbox Code Playgroud)

并且可能的重量是给予0.5重量和b 0.5重量,或者等等.(我试图加权平均值).

哪个工作正常,但说我想增加一个权重,我不太确定我会怎么做.

谢谢

python tuples

11
推荐指数
3
解决办法
2万
查看次数

numpy rollaxis - 它究竟是如何工作的?

所以我正在尝试numpy,我在rollaxis方法中遇到了一个奇怪的(?)行为.

In [81]: a = np.ones((4, 3, 2))

In [82]: a.shape
Out[82]: (4, 3, 2)

In [83]: x = np.rollaxis(a, 2)

In [84]: x.shape
Out[84]: (2, 4, 3)

In [85]: np.rollaxis(x, -2).shape
Out[85]: (4, 2, 3)
Run Code Online (Sandbox Code Playgroud)

-2不应该反转rolrolis?我要做的是应用一个只能在2坐标第一时应用的矩阵.但后来我想把我的阵列恢复原状.我发现工作的唯一的事情是申请np.rollaxis(x, 2)两次,或申请np.rollaxis(x, 0, start=3).我只是通过猜测发现了这些,我不知道它们为什么会起作用.他们似乎也模糊了我真正想做的事情.有人可以解释一下我应该"扭转"滚动的方式,或者我做错了什么?

(有这样的pythonic方法吗?)

python numpy

10
推荐指数
2
解决办法
9023
查看次数

NumPy百分位函数与MATLAB的百分位函数不同

当我尝试在MATLAB中计算第75个百分点时,我得到的值与NumPy中的值不同.

MATLAB:

>> x = [ 11.308 ;   7.2896;   7.548 ;  11.325 ;   5.7822;   9.6343;
     7.7117;   7.3341;  10.398 ;   6.9675;  10.607 ;  13.125 ;
     7.819 ;   8.649 ;   8.3106;  12.129 ;  12.406 ;  10.935 ;
    12.544 ;   8.177 ]

>> prctile(x, 75)

ans =

11.3165
Run Code Online (Sandbox Code Playgroud)

Python + NumPy:

>>> import numpy as np

>>> x = np.array([ 11.308 ,   7.2896,   7.548 ,  11.325 ,   5.7822,   9.6343,
     7.7117,   7.3341,  10.398 ,   6.9675,  10.607 ,  13.125 ,
     7.819 ,   8.649 ,   8.3106, …
Run Code Online (Sandbox Code Playgroud)

python matlab numpy r percentile

9
推荐指数
2
解决办法
4507
查看次数

使用python请求库进行谷歌搜索

(我试过看,但所有其他答案似乎都在使用urllib2)

我刚刚开始尝试使用请求,但我仍然不太清楚如何从页面发送或请求其他内容.例如,我会的

import requests

r = requests.get('http://google.com')
Run Code Online (Sandbox Code Playgroud)

但我不知道现在怎么做,例如,使用提供的搜索栏进行谷歌搜索.我已经阅读了快速入门指南,但我对HTML POST等不是很熟悉,所以它并没有太大帮助.

有什么干净而优雅的方式来做我要问的事吗?

python google-search google-search-api python-requests

8
推荐指数
3
解决办法
2万
查看次数

使用scipy.stats和statsmodels计算线性回归时的结果不同

当我尝试OLS适合这两个库时,我得到不同的r ^ 2值(确定系数),我无法弄清楚原因.(为方便起见,删除了一些间距)

In [1]: import pandas as pd       
In [2]: import numpy as np
In [3]: import statsmodels.api as sm
In [4]: import scipy.stats
In [5]: np.random.seed(100)
In [6]: x = np.linspace(0, 10, 100) + 5*np.random.randn(100)
In [7]: y = np.arange(100)

In [8]: slope, intercept, r, p, std_err = scipy.stats.linregress(x, y)

In [9]: r**2
Out[9]: 0.22045988449873671

In [10]: model = sm.OLS(y, x)
In [11]: est = model.fit()

In [12]: est.rsquared
Out[12]: 0.5327910685035413
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我想不出来!某处有错误吗?

python statistics scipy statsmodels

5
推荐指数
1
解决办法
2508
查看次数

np.exp比np.e慢得多?

In [49]: timeit.timeit("np.exp(100)", setup="import numpy as np")
Out[49]: 1.700455904006958

In [50]: timeit.timeit("np.e**100", setup="import numpy as np")
Out[50]: 0.16629505157470703
Run Code Online (Sandbox Code Playgroud)

是否有任何理由使用np.e**100的CPython实现比使用numpy版本慢得多?numpy版本不应该更快,因为它被推到C代码?

python optimization numpy

5
推荐指数
1
解决办法
1万
查看次数

仅从数据框中选择某些行的惯用法(其索引存在于其他数据框中)

所以我有两个pandas时间序列,两者的索引都是时间戳.问题是 - 并非所有时间戳都存在于两个时间序列中.我想对匹配的点执行线性回归,忽略那些没有"对"的点

这是我目前的解决方案,但它似乎有点冗长和丑陋:

indexes_used = sorted(list(set(series1).intersection(series2)))

perform_regression(series1.loc[indexes_used], series2.loc[indexes_used])
Run Code Online (Sandbox Code Playgroud)

或者,我正在考虑做(但创建临时数据帧似乎是多余的):

temp_frame = pd.concat([series1, series2]).T.dropna() #need the transpose to keep timestamps on vertical axis

perform_regression(blabla)
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

python pandas

4
推荐指数
1
解决办法
279
查看次数

numpy数组切片未预期的结果

我不明白下面的行为.numpy数组通常可以通过索引来访问,所以[:,1]应该等同于[:] [1],或者我认为.有人可以解释为什么不是这样吗?

>>> a = np.array([[1, 2, 3], [4, 5, 6]])  
>>> a[:,1]  
array([2, 5])  
>>> a[:][1]  
array([4, 5, 6])
Run Code Online (Sandbox Code Playgroud)

谢谢!

python numpy

1
推荐指数
1
解决办法
74
查看次数