小编use*_*424的帖子

Python在标准库中是否有装饰器?

除了@staticmethod@classmethod?大多数语言都有一些使用大多数语言功能的基本库.

似乎我发现自己制作的许多装饰器都是很多人都会使用的东西,但我还没有找到任何内置的python装饰器来做它们.有这样的事吗?

python decorator

17
推荐指数
2
解决办法
5388
查看次数

为什么numpy.ravel会返回副本?

在以下示例中:

>>> import numpy as np
>>> a = np.arange(10)
>>> b = a[:,np.newaxis]
>>> c = b.ravel()
>>> np.may_share_memory(a,c)
False
Run Code Online (Sandbox Code Playgroud)

为什么要numpy.ravel返回我的数组的副本?它不应该只是返回a

编辑:

我刚刚发现np.squeeze 它没有返回副本.

>>> b = a[:,np.newaxis]
>>> c = b.squeeze()
>>> np.may_share_memory(a,c)
True
Run Code Online (Sandbox Code Playgroud)

为什么在这种情况下squeeze和之间存在差异ravel

编辑:

正如mgilson指出的那样,newaxis将数组标记为不连续,这ravel就是返回副本的原因.

所以,新问题是为什么newaxis将数组标记为不连续.

尽管如此,这个故事更加怪异:

>>> a = np.arange(10)
>>> b = np.expand_dims(a,axis=1)
>>> b.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

使用include动态指向HTML

我想指向一个基于变量的不同HTML文件.我使用以下格式的include:

{% include 'templates/case/{{cid}}/intro.html' %}
Run Code Online (Sandbox Code Playgroud)

这会引发错误:

TemplateNotFound: templates/case/{{cid}}/intro.html
Run Code Online (Sandbox Code Playgroud)

看看这个,我知道Jinja2在运行时没有解析变量.值cid = ABC(ABC是在路径中的文件夹的名称),所以我预计总路径是:

templates/case/ABC/intro.html
Run Code Online (Sandbox Code Playgroud)

如果我直接在包含它使用这个解决的路径它是有效的.

我该如何解决这个问题?

html python jinja2

10
推荐指数
4
解决办法
5023
查看次数

如何在Bootstrap中创建切片布局

我在我的网站上使用Bootstrap 3,我有很多帖子.现在我使用bootstrap列和面板来显示索引页面上的帖子.

但我想在瓷砖视图中显示相同的帖子,如Pinterest页面.

在bootstrap 3中有没有办法做到这一点?现在我的布局看起来像

<div class="row product-list">
    <?php getList(); ?>
</div>
Run Code Online (Sandbox Code Playgroud)

函数获取帖子列表的位置.它们显示在这样的面板中:

<a href="product-des.php?1">
<div class='col-xs-12 col-sm-4 col-md-3 col-lg-3'><div class='panel panel-warning'>
<div class='panel-heading'>Microsoft Lumia 575</div>
<div class='panel-body'>
<img class='product_listing_img img-responsive' src=files/uploaded_images/mobile-2.jpg></div>
</div>
</div>
</a>
Run Code Online (Sandbox Code Playgroud)

目前来看

现在使用面板看起来像什么

预期的观点

我喜欢它的样子(Pinterest风格)

css twitter-bootstrap

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

为什么numpy random.choice()函数已经停止?

我一直在使用numpy并需要random.choice()函数.遗憾的是,在2.0版本中,它不在随机或random.mtrand.RandomState模块中.它被排除在特定原因之外吗?关于它的讨论或文档中没有任何内容!

有关信息,我在mac os上的python 2.7上运行Numpy 2.0.全部由站点上提供的标准安装程序安装.

谢谢!

python numpy scipy

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

使用NumPy数组交换列

当我拥有a=1b=2,我可以a,b=b,a这样写,ab互相交换.

我使用这个矩阵作为数组:

   [ 1,  2,  0, -2]
   [ 0,  0,  1,  2]
   [ 0,  0,  0,  0]
Run Code Online (Sandbox Code Playgroud)

交换numpy数组的列不起作用:

import numpy as np

x = np.array([[ 1,  2,  0, -2],
   [ 0,  0,  1,  2],
   [ 0,  0,  0,  0]])

x[:,1], x[:,2] = x[:,2], x[:,1]
Run Code Online (Sandbox Code Playgroud)

它产生:

   [ 1,  0,  0, -2]
   [ 0,  1,  1,  2]
   [ 0,  0,  0,  0]
Run Code Online (Sandbox Code Playgroud)

所以x[:,1]简单地被覆盖而不是转移到x[:,2].

为什么会这样?

python arrays numpy iterable-unpacking

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

轴上的numpy sum

是否有一个numpy的函数来汇总的阵列沿(没有结束)一个给定的轴线?沿着轴,我的意思是相当于:

[x.sum() for x in arr.swapaxes(0,i)].
Run Code Online (Sandbox Code Playgroud)

沿轴i 求和.

例如,numpy.sum不能直接工作的情况:

>>> a = np.arange(12).reshape((3,2,2))
>>> a
array([[[ 0,  1],
        [ 2,  3]],

       [[ 4,  5],
        [ 6,  7]],

       [[ 8,  9],
        [10, 11]]])
>>> [x.sum() for x in a] # sum along axis 0
[6, 22, 38]
>>> a.sum(axis=0)
array([[12, 15],
       [18, 21]])
>>> a.sum(axis=1)
array([[ 2,  4],
       [10, 12],
       [18, 20]])
>>> a.sum(axis=2)
array([[ 1,  5],
       [ 9, 13],
       [17, 21]])
Run Code Online (Sandbox Code Playgroud)

axis numpy sum

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

matplotlib图例显示双错误栏

为什么matplotlib显示两个错误栏?我认为它可能与非对称误差条有关.

在此输入图像描述

你可以用这个重现问题:

>>> import matplotlib.pyplot as plt
>>> plt.errorbar([1,2,3],[3,4,2],yerr=[[1,2,0.5]]*2, label='data')
<Container object of 3 artists>
>>> plt.legend()
<matplotlib.legend.Legend object at 0x10b82f590>
>>> plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

是否有更好的广播阵列方式?

我想将数组广播b到它与另一个数组进行算术运算时所需的形状a.

例如,如果a.shape = (3,3)并且b是标量,我想得到一个形状为(3,3)并且用标量填充的数组.

一种方法是这样的:

>>> import numpy as np
>>> a = np.arange(9).reshape((3,3))
>>> b = 1 + a*0
>>> b
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)

虽然这实际上很有效,但我不禁觉得它看起来有点奇怪,并且对于那些看着代码的人来说,我试图做的事情并不明显.

有没有更优雅的方式来做到这一点?我查看了文档np.broadcast,但速度要慢一些.

In [1]: a = np.arange(10000).reshape((100,100))

In [2]: %timeit 1 + a*0
10000 loops, best of 3: 31.9 us per loop

In [3]: %timeit bc = np.broadcast(a,1);np.fromiter((v for u, v in bc),float).reshape(bc.shape)
100 loops, best of …
Run Code Online (Sandbox Code Playgroud)

python numpy numpy-broadcasting

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

当ssh管道坏了时停止python程序

我正在编写一个带有无限循环的python脚本,我在ssh上运行.当某人杀死ssh时,我希望脚本终止.例如:

脚本(script.py):

while True:
    # do something
Run Code Online (Sandbox Code Playgroud)

将运行为:

ssh foo ./script.py
Run Code Online (Sandbox Code Playgroud)

当我杀死ssh进程时,我希望另一端的脚本停止运行.

我试过寻找一个封闭的标准输出:

while not sys.stdout.closed:
    # do something
Run Code Online (Sandbox Code Playgroud)

但这没用.

我该如何实现这一目标?

编辑:

远程机器是Mac,它在csh中打开程序:

502 29352 ??         0:00.01 tcsh -c python test.py
502 29354 ??         0:00.04 python test.py
Run Code Online (Sandbox Code Playgroud)

我正在从python脚本中打开ssh进程,如下所示:

p = Popen(['ssh','foo','./script.py'],stdout=PIPE)

while True:
    line = p.stdout.readline()
    # etc
Run Code Online (Sandbox Code Playgroud)

编辑

提议的解决方案:

  1. 运行脚本 while os.getppid() != 1

这似乎在Linux系统上工作,但并没有在远程机器运行OSX时工作.问题是该命令是在csh中启动的(见上文),因此csh的父进程id设置为1,而不是脚本.

  1. 定期登录 stderr

这有效,但脚本也在本地运行,我不想打印心跳stderr.

  1. 用pseduo tty运行脚本ssh -tt.

这确实有效,但有一些奇怪的后果.考虑以下:

remote_script:

#!/usr/bin/env python
import os
import time
import sys

while …
Run Code Online (Sandbox Code Playgroud)

python linux ssh

6
推荐指数
2
解决办法
1794
查看次数