小编kjo*_*kjo的帖子

如何使用Python设置文件的ctime?

如何设置Unix文件的ctime

(我更喜欢Python的答案.如果没有办法用标准的Python做,那么我认为C也可以.)

(注意:我知道可以使用os.utime来设置文件的atime和mtime.我对设置ctime很感兴趣.)

(注2:我希望有一个适用于任何POSIXoid Unix的答案,但如果没有,我对Darwin和Ubuntu感兴趣.)

python unix ctime stat

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

numpy:将(n,)数组转换为(n,1)数组的语法/习惯用法?

我想把一个ndarray形状(n,)的n形物体塑造成一个有形状(n,1)的物体.我想出的最好的就是滚动我自己的_to_col函数:

def _to_col(a):
    return a.reshape((a.size, 1))
Run Code Online (Sandbox Code Playgroud)

但是我很难相信这种无处不在的操作还没有被纳入numpy的语法中.我认为我只是无法找到合适的谷歌搜索来找到它.

python arrays casting numpy vector

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

numpy.ndarray枚举在维度的适当子集上?

(在这篇文章中,让我们np简写一下numpy.)

假设a是(n  +  k)维np.ndarray对象,对于一些整数n  > 1且k  > 1.(IOW,n  +  k  > 3是值a.ndim).我想列举a它的前n个维度; 这意味着,在每一次迭代,枚举/迭代器产生一对,其第一个元素是一个元组iiÑ指数,以及第二个元素是ķ维子ndarraya[ii].

当然,编写一个函数来做这个并不困难(事实上,我在下面给出了这样一个函数的例子),但我想知道这个:

是否numpy提供了执行此类"部分"枚举的特殊语法或函数?

(通常,当我想迭代一个多维np.ndarray对象时,我会使用np.ndenumerate,但在这里没有用,因为(据我所知)np.ndenumerate会迭代所有 n  +  k维度.)

假设上述问题的答案是肯定的,那么就是这样的后续行动:

那些迭代的n维不连续的情况怎么样?

(在这种情况下,枚举器/迭代器在每次迭代时返回的对的第一个元素将是r  >  n个元素的元组,其中一些元素将是表示"全部"的特殊值,例如slice(None);第二个元素对仍然是ndarray长度k.)

谢谢!


下面的代码有希望澄清问题规范.该函数partial_enumerate使用任何numpy可用于此目的的特殊构造来执行我想要执行的操作.定义之后partial_enumerate …

python numpy

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

重复调用函数的功能?

考虑假设函数repeatcall,它将参数作为无参数可调用func和正整数n,并返回一个列表,其成员是通过执行func() n次数获得的.它支持无限的愚蠢的hijinks流,如:

>>> repeatcall(lambda: id(dict()), 5)
[45789920, 45788064, 45807216, 45634816, 45798640]

>>> urandom = lambda: struct.unpack('Q', open('/dev/urandom').read(8))[0]
>>> repeatcall(urandom, 3)
[3199039843823449742, 14990726001693341311L, 11583468019313082272L]

>>> class Counter(itertools.count): __call__ = itertools.count.next
>>> repeatcall(Counter(100, -2), 4)
[100, 98, 96, 94]
Run Code Online (Sandbox Code Playgroud)

我可以发誓,我已经repeatcall在Python 2.x标准库中看到过像某个函数,但我找不到它.如果我没有梦想这个,我可以在标准库中找到它吗?

PS:我知道推出自己的产品是微不足道的,但我讨厌重新发明轮子,特别是那些已经在标准库中的轮子.我不是在问自己怎么样.

编辑:让我更明确的是我不会问如何编码repeatcall.

python iteration iterator

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

LSF(bsub):如何指定在所有其他人完成后运行的单个"总结"作业?

基本问题:我想将N  + 1个作业提交给LSF管理的Linux集群,这样 就可以在前N个作业完成之前不运行(N + 1)-st"总结"作业.

EXTRA: 如果可能的话,如果我可以安排事情以便(N  + 1)-st("总结")作业作为其第一个参数接收值为0(比如说,如果以前的话),那将是理想N个作业成功终止,否则值不同于0.

这个问题(或者至少标有"BASIC PROBLEM"的部分)比LSF 设计用来处理的要简单得多bsub,所以我很难浏览大量的文档bsub来找出做我想做的最简单的方法.去做.

bsub实现这种安排最简单的命令是什么?


更具体地说,我需要更换???下面的各个插槽以确保wrapup仅在所有foo作业完成后执行(理想情况下使用反映foo作业结束状态的参数)?

bsub -q someq ??? foo 1
bsub -q someq ??? foo 2
bsub -q someq ??? foo 3
bsub -q someq ??? wrapup [???]
Run Code Online (Sandbox Code Playgroud)

cluster-computing lsf

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

如何在Perl中指定"尾部切片"?

如果我只想提取制表符分隔记录的第4,第5和第7个元素(比如说),我可以这样做:

my @f = (split(/\t/, $_, -1))[3, 4, 6];
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要第4个元素和"尾片",包括从第7个元素到数组末尾的所有元素,该怎么办?我不知道如何在一行中做到这一点.我能做的最好的就是:

my @f = split(/\t/, $_, -1);
@f = @f[3, 6..$#f];
Run Code Online (Sandbox Code Playgroud)

在两行中执行此操作的唯一原因是我可以$#f在第二行中指定,但这需要比任务中固有的更高程度的特异性; 该任务并不关心返回的值中有多少元素split.很高兴能够指定类似"从第7个元素开始可用的所有内容"......这就是我所说的"尾片":只指定起点的切片,而终点是隐含的.

(这种规范cut在Unix 中使用该实用程序时很常见;例如:

... | cut -f 4,7-
Run Code Online (Sandbox Code Playgroud)

)

是否有一些下标表达式,我可以直接应用于(split(...))子表达式,在一行中产生与上面两行代码所达到的效果相同的效果?

编辑:要清楚,我要避免的是$#ARRAY建筑.我知道我总能做点什么

my @f = do { my @t = split(/\t/, $_, -1); @t[3, 6..$#t] };
Run Code Online (Sandbox Code Playgroud)

perl

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

如何使用d3.js绘制*简单*线段?

在d3.js 的文档中,我找不到在两点之间绘制简单线段的简单方法.我能找到这个的唯一方法是需要为x和y等创建回调等等.这是一个主要的生产只是为了绘制一个简单的线段.

有什么比这更简单的了吗?

d3.js

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

如何调试CSS规范中未涉及的声明组合导致的不一致?

下面的两个屏幕截图显示了Chrome 31(左侧)和Safari 6的相同HTML + CSS(在本文末尾给出)之间的巨大差异.该页面可在此处查看.注意:此页面不使用JS.

在此输入图像描述 在此输入图像描述

对于这种广泛差异的一种可能解释是该页面的样式表包含CSS规范未涵盖的声明的某些组合,这意味着每个浏览器可以任意解释它.(在这种情况下,例如,将"外的规格组合"可以是一对声明max-width: 400px;display:table;用于.main选择器.)

问题:是否有一些自动方法来检测这种"不符合规范"的声明组合?

值得注意的是,这里给出的示例可能相对容易通过检查进行诊断(至少对于那些对CSS规范有非常全面的命令的人来说),但是想象出这样的"不符合规范"的情况并不容易. "组合可能更巧妙地产生(例如,通过单独样式表中的声明之间的相互作用等).因此,识别这种"不合规格"组合的一些工具将是一个巨大的帮助.

我能想到的唯一这样的工具是CSS Lint,但它没有在CSS中拾取任何可能导致修复上述差异的内容.


*{
  -webkit-box-sizing:border-box;
     -moz-box-sizing:border-box;
          box-sizing:border-box;
  margin:0;
  padding:0;
  border:0;
  outline:0;
  font-family:consolas,monaco,courier,monospace;
}

.banner{
  background:lightgray;
}
.header{
  height:50px;
}
.footer{
  height:300px;
}

.main{
  position:relative;
  max-width:400px;
  margin:0 auto;
  padding:10px;
  display:table;

  background-color:steelblue;
}

.left-panel{
  position:absolute;
  background-color:#555;
}
.vfloat{
  position:absolute;
  padding:10px 30px;
  background-color:#0aa;
  font-size:15px;
}

.right-panel{
  margin-left:200px;
}
.vfixed{
  padding:20px 60px;
  background-color:orange;
  font-size:30px;
}
Run Code Online (Sandbox Code Playgroud)


<div class="header banner"></div>

<div class="main"> …
Run Code Online (Sandbox Code Playgroud)

css

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

如何通过绝对定位的非后代实现鼠标效果?

标准mouseout事件的一个问题是,它不仅在光标离开由元素的外部边界限定的屏幕区域时触发,而且当光标悬停在该周边内包含的某个其他元素上时触发.

jQuery mouseleave事件的基本原理是在光标离开由元素外部边界限定的区域时发出信号.

不幸的是,这似乎只有在"阻碍"元素是"受阻"元素的后代时才有效.如果"阻碍"元素是通过绝对定位的位置,那么当鼠标悬停在它上面时,mouseleave"阻塞"元素上的事件将被触发.

例如,使用以下HTML:

<div id="b-div">
    <div id="d-div"><span>d</span></div>
</div>
<div id="c-div"><span>c</span></div>
Run Code Online (Sandbox Code Playgroud)

... #d-div是一个真正的后代#b-div,而#c-div不是,但是,但我们可以设计它,使它"阻碍" #b-div所有相同.这在这个 jsFiddle中有说明.

如果现在定义以下事件#b-div:

$( '#b-div' ).bind( {
    mouseenter: function () {
        $( this ).addClass( 'outlined' );
    },
    mouseleave: function () {
        $( this ).removeClass( 'outlined' );
    }
} );
Run Code Online (Sandbox Code Playgroud)

...然后将鼠标悬停在#b-div外围周围会导致在此周边出现蓝色轮廓,除非鼠标结束#c-div.

有没有办法让具有相同的效果#b-div,并#c-divmouseleave与实现#b-div#d-div

编辑:我已经修复了jsFiddle中显示的示例.该示例的原始版本显示了不具代表性的特殊情况,其中所有阻碍元素与受阻元素重叠.在这种特殊情况下,可以通过在阻碍元件和阻塞元件上定义相同的事件来模拟期望的效果,因此,实际上,将阻碍元件转变为阻塞元件的补片.当阻碍元件未完全包含在受阻元件的外周边内时,这将不起作用(如修正后的jsFiddle所示).更一般地,基于在 …

javascript jquery events mouseleave mouseout

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

如何将矢量变量"解包"成几个变量?

在Python中,可以通过赋值将3元组(例如)"解包"为三个单独的变量:

In [1]: triplet = (1, 'two', (True, True, True))

In [2]: first, second, third = triplet

In [3]: third
Out[3]: (True, True, True)

In [4]: second
Out[4]: 'two'

In [5]: first
Out[5]: 1
Run Code Online (Sandbox Code Playgroud)

可以在MATLAB中做这样的事情吗?

我尝试过的一切都失败了.例如:

>> triplet = {1, 'two', [true, true, true]};
>> [first second third] = triplet
Too many output arguments.
Run Code Online (Sandbox Code Playgroud)

matlab

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