应该是一个简单的问题,但我无法在任何地方找到答案.~python中的运算符被记录为按位反转运算符.精细.我注意到看似精神分裂的行为,即:
~True -> -2
~1 -> -2
~False -> -1
~0 -> -1
~numpy.array([True,False],dtype=int) -> array([-2,-1])
~numpy.array([True,False],dtype=bool) -> array([False,True])
Run Code Online (Sandbox Code Playgroud)
在前4个示例中,我可以看到python正在实现(如文档所述)~x = -(x+1),输入被视为int,即使它是布尔值.因此,对于标量布尔值,~不被视为逻辑否定.并非在使用int类型的布尔值定义的numpy数组上的行为相同.
~那么为什么在布尔数组上作为逻辑否定运算符工作(另请注意:~numpy.isfinite(numpy.inf) -> True?)?
我必须not()在标量上使用它是非常烦人的,但是not()无法否定数组.然后对于一个数组,我必须使用~,但~不会否定一个标量......
在这里研究一些矩阵代数.有时我需要反转可能是单数或病态的矩阵.我知道简单地执行此操作是pythonic:
try:
    i = linalg.inv(x)
except LinAlgErr as err:
    #handle it
Run Code Online (Sandbox Code Playgroud)
但我不确定它的效率如何.这会不会更好?
if linalg.cond(x) < 1/sys.float_info.epsilon:
    i = linalg.inv(x)
else:
    #handle it
Run Code Online (Sandbox Code Playgroud)
numpy.linalg只是简单地执行我禁止的测试吗?
我正在写一个移动平均函数,它使用numpy中的convolve函数,它应该等于a(加权移动平均值).当我的权重都相等时(如简单的算术平均值),它可以正常工作:
data = numpy.arange(1,11)
numdays = 5
w = [1.0/numdays]*numdays
numpy.convolve(data,w,'valid')
Run Code Online (Sandbox Code Playgroud)
给
array([ 3.,  4.,  5.,  6.,  7.,  8.])
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用加权平均值时
w = numpy.cumsum(numpy.ones(numdays,dtype=float),axis=0); w = w/numpy.sum(w)
Run Code Online (Sandbox Code Playgroud)
而不是(对于相同的数据)3.667,4.667,5.667,6.667,...我希望,我得到
array([ 2.33333333,  3.33333333,  4.33333333,  5.33333333,  6.33333333,
        7.33333333])
Run Code Online (Sandbox Code Playgroud)
如果我删除'有效'标志,我甚至看不到正确的值.我真的想使用卷积为WMA和MA,因为它使代码更清晰(相同的代码,不同的权重),否则我认为我将不得不遍历所有数据并采取切片.
关于这种行为的任何想法?
我在Ubuntu 14.04上安装了scikit-learn 0.16.1并正在完成本教程.SKL安装了所有默认配置.教程说明
您可以在scikit-learn文件夹中找到本教程的源代码:scikit-learn/doc/tutorial/text_analytics /
我用过find我的整个驱动器,没有"教程"文件夹.不在任何地方 有人知道这些文件的安装位置吗?
我正在尝试为一些数据分析构建一个 Power BI 工具,我需要的图之一是反分位数图(x 轴上的分位数,y 轴上的值)。Power BI 没有这个,我在应用市场上找不到,所以我使用 Python 来编写我需要的东西。
静态情节pandas.DataFrame.plot()工作正常,但缺乏交互式情节的魅力。我已经对我需要使用的情节进行了编码,并使用 运行它py.iplot(),但是 Power BI 告诉我
没有创建图像。Python 代码不会导致创建任何视觉效果。确保您的 Python 脚本生成 Python 默认设备的绘图
没有错误,我通过使用 运行绘图确认代码正常py.plot(),并在浏览器中查看结果。我的代码是:
import plotly.plotly as py
import plotly.graph_objs as go
# get the quantiles and reshape
qs = dataset.groupby(by='HYDROCARBON_TYPE').Q42018_AbsDevi.quantile(q=[0.01,0.05,0.1,0.2,0.25,0.5,0.75,0.8,0.9,0.95,0.99]).unstack().transpose()
# plot it
traces = []
for col in qs.columns:
    traces.append(go.Scatter(x=qs.index, y=qs[col], name=col))
py.plot(traces,filename='basic-line')
Run Code Online (Sandbox Code Playgroud)
为什么这行不通?
我已经用这个 Github 问题把我的头撞在墙上,足以最终来到这里寻求帮助。我的repo有两个感兴趣的分支:master,这是当前实时发布的分支,以及alternate-testing,这正是它听起来的样子。我们的开发流程具有定期分支(和分叉)的功能分支alternate-testing,然后合并回alternate-testing. 最后,alternate-testing定期合并到master. 请注意,测试分支是看门人master- 除了master通过之外什么都不会进入alternate-testing。
完全清楚,这不是这样的情况:
1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 [master]
       \                      /
        A -- B -- C -- D -- E [alternate-testing]
Run Code Online (Sandbox Code Playgroud)
就像在这个问题中一样,因为 master本身永远不会改变。更相关的图表是:
1 -- 2 ---------------------- * -- 8 [master]
       \                      /
        A -- B -- C -- D -- E …Run Code Online (Sandbox Code Playgroud) git version-control github merge-conflict-resolution git-merge-conflict
我有一个列表,需要创建条件满足次数的计数.这样做是否更加pythonic:
cnt = sum([1 for s in a_list if some_condition])
Run Code Online (Sandbox Code Playgroud)
或者这是更pythonic:
cnt = 0
  for s in a_list:
    if (some_condition):
      cnt += 1
Run Code Online (Sandbox Code Playgroud) 我的问题与这个stackoverflow帖子有关:在这里输入链接描述,其中inspectorG4dget提供了代码
def decToBin(n):
    if n==0: return ''
    else:
        return decToBin(n/2) + str(n%2)
Run Code Online (Sandbox Code Playgroud)
Alex Martelli观察到的递归是不必要的,因为可以使用明显的bin(x)[2:].如果用户需要二进制表示作为字符串,这很好.但是,我需要二进制表示作为列表或numpy ndarray.我可以看到,我的选择是a)改编这个代码或b)像这样的东西string.split(','.join(bin(10)[2:]),',').我知道字符串操作往往很昂贵,但递归也很昂贵.
鉴于我需要将整数转换为array_like的位,哪个选项(a或b)可能更有效?还有另一种更简单,更好的方法吗?
我有一个列表列表,其中每个元素都是一个字符:
 ngrams = [['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'],
 ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c']]
Run Code Online (Sandbox Code Playgroud)
由此,我想生成一个包含内容的新单个列表['aa','ab','ac','ba','bb','bc','ca','cb','cc'].每个列表的各个元素彼此相加,但是与列表的顺序相反.我想出了这个(在哪里np = 2):
for cnt in range(np-2,-1,-1):
  thisngrams[-1] = [a+b for (a,b) in zip(thisngrams[-1],thisngrams[cnt])]          
Run Code Online (Sandbox Code Playgroud)
我的解决方案需要处理np高于2.我希望这是O(np),这也不错.有人可以建议一个更有效和pythonic的方式来做我想要的(或这是一个很好的pythonic方法)?
我刚刚花了两天时间尝试从源代码构建Tensorflow,当我意识到sudo pip(即使使用-H标志)没有找到我的anaconda pip,而是找到一个用apt安装的pip 时,我终于成功了.然后,运行,sudo -H ~/anaconda3/bin/pip ...解决了我的问题.
为了再次避免这种问题(我在使用"错误"python的过程中遇到了几个问题),我可以从我的系统中完全删除python,只保留Anaconda吗?这是可取的吗?