我有以下问题:
在__m128i寄存器中,按以下顺序排列有16个8位值:
[ 1, 5, 9, 13 ] [ 2, 6, 10, 14] [3, 7, 11, 15] [4, 8, 12, 16]
Run Code Online (Sandbox Code Playgroud)
我想要实现的是有效地改组字节以获得这种排序:
[ 1, 2, 3, 4 ] [ 5, 6, 7, 8] [9, 10, 11, 12] [13, 14, 15, 16]
Run Code Online (Sandbox Code Playgroud)
它实际上类似于4x4矩阵转置,但在一个寄存器内的8位元件上运行.
您能不能指出哪种SSE(优先<= SSE2)指令适合实现这一点?
我想知道一种使用Python和scipy执行ANCOVA(协方差分析)的方法.它基本上是回归线的统计比较.我知道Python可以做ANOVA,它也可以用Scipy.stats进行回归线拟合.如果有可能的话,我不知道如何将它们放在一起以获得有效的ANCOVA.
我创建了一个pandas数据框,然后将其转换为数据透视表.
我的数据透视表看起来像这样:
Operators TotalCB Qd(cb) Autopass(cb)
Aircel India 55 11 44
Airtel Ghana 20 17 3
Airtel India 41 9 9
Airtel Kenya 9 4 5
Airtel Nigeria 24 17 7
AT&T USA 18 10 8
Run Code Online (Sandbox Code Playgroud)
我想知道如何添加计算列,以便我使用Autopass%(Autopass(cb)/TotalCB*100)获取我的数据透视表,就像我们能够使用计算字段选项在Excel中创建它们一样.
我希望我的数据透视表输出如下所示:
Operators TotalCB Qd(cb) Autopass(cb) Qd(cb)% Autopass(cb)%
Aircel India 55 11 44 20% 80%
Airtel Ghana 20 17 3 85% 15%
Airtel India 41 29 9 71% 22%
Airtel Kenya 9 4 5 44% 56%
AT&T USA 18 10 8 56% …Run Code Online (Sandbox Code Playgroud) 我有一个代码框架,涉及使用dill转储会话.这曾经工作得很好,直到我开始使用熊猫.以下代码在CentOS 6.5版上引发了PicklingError:
import pandas
import dill
dill.dump_session('x.dat')
Run Code Online (Sandbox Code Playgroud)
问题似乎源于pandas.algos.实际上,运行它来重现错误就足够了:
import pandas.algos
import dill
dill.dump_session('x.dat') / dill.dumps(pandas.algos)
Run Code Online (Sandbox Code Playgroud)
错误是pickle.PicklingError: Can't pickle <cyfunction lambda1 at 0x1df3050>: it's not found as pandas.algos.lambda1.
问题是,我的电脑上没有出现这个错误.它们都有相同版本的pandas(0.14.1),dill(0.2.1)和python(2.7.6).
看一下badobjects,我得到:
>>> dill.detect.badobjects(pandas.algos, depth = 1)
{'__builtins__': <module '__builtin__' (built-in)>,
'_return_true': <cyfunction lambda2 at 0x1484d70>,
'np': <module 'numpy' from '/usr/local/lib/python2.7/site-packages/numpy-1.8.2-py2.7-linux-x86_64.egg/numpy/__init__.pyc'>,
'_return_false': <cyfunction lambda1 at 0x1484cc8>,
'lib': <module 'pandas.lib' from '/home/talkr/.local/lib/python2.7/site-packages/pandas/lib.so'>}
Run Code Online (Sandbox Code Playgroud)
这似乎是由于pandas.algos两个OS-s(可能是不同的编译器?)的不同处理.在我的电脑,在这里dump_session是没有错误的,pandas.algos._return_false是<cyfunction <lambda> at 0x06DD02A0>,虽然在CentOS它<cyfunction lambda1 at 0x1df3050>.为什么处理方式不同?
一开始,我尝试过conda install dill,conda但无法在互联网上找到它。
然后我从这里下载了默认 IPython 目录中的.tgz和.zip文件:https :
//pypi.python.org/pypi/dill
之后我尝试了以下命令:
conda install dill-0.2b1.zip
conda install "C:\<rest_of_the_complete_path>\dill-0.2b1.zip"
对于.tgz. 所有四次尝试都产生了错误:
No packages found matching:
我做错了什么?我正在尝试重复以下链接中给出的示例:http : //nbviewer.ipython.org/gist/minrk/5241793
编辑 1:我dill通过运行.exe来自https://pypi.python.org/pypi/dill的文件安装在我的系统上。这一步安装dill在我的系统 python ( C:\Python27) 上,但没有安装在我的 Anaconda Python 上。我假设这两个numpypython是分开的,因为我可以在两者上导入常用模块(例如)——我通过的 pythoncmd和我通过我的 IPython 笔记本访问的那个——但我dill只能在我访问的 python 上导入cmd而不是在我的 IPython 笔记本中。
我一直在试图弄清楚GridSearchCV的best_score_参数是如何计算的(换句话说,它是什么意思).该文件说:
左侧数据的best_estimator得分.
所以,我试着将它翻译成我理解的东西并计算实际"y"的r2_score和每个kfold的预测ys - 并得到不同的结果(使用这段代码):
test_pred = np.zeros(y.shape) * np.nan
for train_ind, test_ind in kfold:
clf.best_estimator_.fit(X[train_ind, :], y[train_ind])
test_pred[test_ind] = clf.best_estimator_.predict(X[test_ind])
r2_test = r2_score(y, test_pred)
Run Code Online (Sandbox Code Playgroud)
我到处寻找有关best_score_的更有意义的解释,但找不到任何东西.有人愿意解释吗?
谢谢
我想在每次将.csv文件加载到数据帧时创建新行时获取行数:
def file_len(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
csv_path = "C:/...."
max_length = file_len(csv_path)
data = read_csv(csv_path, sep=';', encoding='utf-8')
Run Code Online (Sandbox Code Playgroud)
使用该代码,我获得了最大行数,但我不知道如何在每次创建一行时获取数据帧中的行数.我想用它们来制作0-100%的进度条
我正在尝试实现自己的Imputer.在某些条件下,我想过滤一些列车样本(我认为质量低).
但是,因为该transform方法只返回X而不是y,并且y本身是一个numpy数组(我无法根据我的知识过滤),而且 - 当我使用时GridSearchCV- y我的transform方法收到的是None,我不能似乎找到了办法.
只是为了澄清:我非常清楚如何过滤数组.我找不到一种方法来将y矢量上的样本过滤适合当前的API.
我真的想从一个BaseEstimator实现中做到这一点,以便我可以使用它GridSearchCV(它有一些参数).我是否错过了实现样品过滤的不同方式(不是通过BaseEstimator,而是GridSearchCV顺从)?目前的API有什么办法吗?
低于Slice和手动反向操作之间的性能差异.如果是这种情况,那是什么原因?
timeit.timeit("a[::-1]","a=[1,2,3,4,5,6]",number=100)
6.054327968740836e-05
timeit.timeit("[a[i] for i in range(len(a)-1,-1,-1)]","a=[1,2,3,4,5,6]",number=100)
0.0003132152330920235
Run Code Online (Sandbox Code Playgroud) 我有一种情况,我想强制从某个(抽象)类继承的每个类来实现一个方法。这是我通常会使用@abstractmethod 实现的目标。但是,考虑到这种多重继承的情况:
from abc import ABCMeta, abstractmethod
class A(object):
__metaclass__ = ABCMeta
@abstractmethod
def very_specific_method(self):
pass
class B(A):
def very_specific_method(self):
print 'doing something in B'
class C(B):
pass
Run Code Online (Sandbox Code Playgroud)
我也想强制C实施该方法。我希望每个直接或间接继承 A 的类都被强制实现该方法。这可能吗?
澄清:我希望这适用于特定方法,而不是所有抽象方法。抽象方法应该继续以相同的方式工作,但也许应该创建一个新的装饰器来指示不同类型的方法。
旁注:我在问题中使用了 abc,因为这似乎与该问题最相关。我了解抽象方法通常如何工作并定期使用它们。这是一种不同的情况,我不介意不是通过 abc 完成的。
python ×7
python-2.7 ×4
pandas ×3
dill ×2
scikit-learn ×2
abstract ×1
anaconda ×1
dataframe ×1
ipython ×1
optimization ×1
pickle ×1
progress-bar ×1
scipy ×1
simd ×1
slice ×1
sse ×1
statistics ×1
timeit ×1