我看到在使用了一个有趣的技术,答案到另一个问题,并想好一点理解.
我们给出了一个无符号的64位整数,我们对以下几位感兴趣:
1.......2.......3.......4.......5.......6.......7.......8.......
Run Code Online (Sandbox Code Playgroud)
具体来说,我们希望将它们移到前八位,如下所示:
12345678........................................................
Run Code Online (Sandbox Code Playgroud)
我们不关心指示的位的值.,并且不必保留它们.
该溶液是屏蔽掉不需要的位,并且乘以结果0x2040810204081.事实证明,这就是诀窍.
这种方法有多普遍?这种技术可以用来提取任何比特子集吗?如果不是,如何判断该方法是否适用于特定的位组?
最后,如何找到(a?)正确的乘数来提取给定的位?
SciPy似乎在其自己的命名空间中提供了大多数(但不是全部[1])的NumPy函数.换句话说,如果有一个名为的函数numpy.foo,几乎可以肯定的是scipy.foo.大多数情况下,两者看起来完全相同,通常甚至指向同一个函数对象.
有时,他们是不同的.举一个最近出现的例子:
numpy.log10是一个返回NaNs为负参数的ufunc ;scipy.log10 返回负参数的复数值,并且看起来不是ufunc.同样可以说,大约log,log2和logn,但不是关于log1p[2].
另一方面,numpy.exp并且scipy.exp对于相同的ufunc看起来是不同的名称.这也是真正的scipy.log1p和numpy.log1p.
另一个例子是numpy.linalg.solveVS scipy.linalg.solve.它们相似,但后者提供了一些额外的功能.
为什么明显重复?如果这是numpy对scipy命名空间的批量导入,为什么行为和缺失函数的微妙差异?是否有一些总体逻辑可以帮助消除混乱?
[1] ,,numpy.min 和其他几个人都在没有同行的命名空间.numpy.maxnumpy.absscipy
[2]使用NumPy 1.5.1和SciPy 0.9.0rc2进行测试.
我一直Random (java.util.Random)用来洗牌一副52张牌.有52个!(8.0658175e + 67)可能性.然而,我发现种子java.util.Random是a long,它在2 ^ 64(1.8446744e + 19)处小得多.
从这里开始,我怀疑是否java.util.Random 真的那么随意 ; 它实际上能够生成所有52!可能性?
如果没有,我怎样才能可靠地生成一个更好的随机序列,可以产生所有52个!可能性?
你能解释一下Linux上返回的时钟CLOCK_REALTIME和CLOCK_MONOTONIC时钟之间的区别clock_gettime()吗?
如果我需要计算外部源产生的时间戳与当前时间之间的经过时间,那么哪个是更好的选择?
最后,如果我有一个NTP守护进程周期性地调整系统时间,如何做这些调整与每个交互CLOCK_REALTIME和CLOCK_MONOTONIC?
我有一个2D numpy数组.有没有办法在其上创建包含第一k行和所有列的视图?
关键是要避免复制基础数据(数组太大,以至于无法制作部分副本.)
我知道当某些东西是thrown时,堆栈被"解开"到它被捕获的点,并且每个函数上下文中的堆栈上的类实例的析构函数都被运行(这就是为什么你不应该从析构函数中抛出异常的原因) - 你可能最终会抛出第二个)...但是我想知道在内存中我扔的对象是在这种情况下存储的?
它是依赖于实现的吗?如果是这样,大多数流行的编译器是否使用了特定的方法?
假设我们有一个Python字典d,我们就像这样迭代它:
for k,v in d.iteritems():
del d[f(k)] # remove some item
d[g(k)] = v # add a new item
Run Code Online (Sandbox Code Playgroud)
(f并且g只是一些黑盒转换.)
换句话说,我们尝试添加/删除项目,d同时使用迭代它iteritems.
这个定义得很好吗?你能提供一些参考来支持你的答案吗?
(如果它被破坏了,如何解决这个问题非常明显,所以这不是我追求的角度.)
我正在阅读Robert Love的"Linux内核开发",我看到了以下段落:
没有(简单)使用浮点
当用户空间进程使用浮点指令时,内核管理从整数到浮点模式的转换.使用浮点指令时内核必须做的事情因架构而异,但内核通常会捕获陷阱,然后启动从整数到浮点模式的转换.
与用户空间不同,内核不具备对浮点的无缝支持,因为它无法轻易捕获自身.在内核中使用浮点需要手动保存和恢复浮点寄存器以及其他可能的杂务.简短的回答是:不要这样做!除极少数情况外,内核中没有浮点运算.
我从来没有听说过这些"整数"和"浮点"模式.究竟是什么,为什么需要它们?这种区别是否存在于主流硬件架构(例如x86)上,还是特定于某些更奇特的环境?从进程和内核的角度来看,从整数模式到浮点模式的转换到底需要什么?
在Python中,是否有一种交错两个相同长度列表的好方法?
说我给[1,2,3]和[10,20,30].我想把它们变成[1,10,2,20,3,30].
有没有一种简单的方法来创建不可变的NumPy数组?
如果必须从中派生出一个类ndarray,那么为了实现不变性,必须覆盖的最小方法集是什么?
python ×5
numpy ×3
linux ×2
arrays ×1
c ×1
c++ ×1
dictionary ×1
exception ×1
immutability ×1
java ×1
linux-kernel ×1
list ×1
permutation ×1
random ×1
random-seed ×1
readonly ×1
scikits ×1
scipy ×1