我理解,由于数值误差(例如,以不同的顺序求和浮点数),数学上等效的算术运算会如何导致不同的结果.
但是,添加零sum可以改变结果让我感到惊讶.无论如何,我认为这总是适用于花车:x + 0. == x.
这是一个例子.我预计所有的线都是零.任何人都可以解释为什么会这样吗?
M = 4 # number of random values
Z = 4 # number of additional zeros
for i in range(20):
a = np.random.rand(M)
b = np.zeros(M+Z)
b[:M] = a
print a.sum() - b.sum()
-4.4408920985e-16
0.0
0.0
0.0
4.4408920985e-16
0.0
-4.4408920985e-16
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
2.22044604925e-16
0.0
4.4408920985e-16
4.4408920985e-16
0.0
Run Code Online (Sandbox Code Playgroud)
对于较小的M和,似乎不会发生Z.
我也确定了a.dtype==b.dtype.
这是另一个例子,它还演示了python的内置sum行为符合预期:
a = np.array([0.1, 1.0/3, 1.0/7, …Run Code Online (Sandbox Code Playgroud) 我试图通过PHP curl在Centos 6系统上访问第三方服务,该系统附带了针对NSS而不是OpenSSL编译的curl和libcurl.
这给我带来了问题,每次我尝试访问服务时都会收到此错误NSS: client certificate not found (nickname not specified).
我的理解是我需要在NSS数据库中安装证书.
我正在寻找有关如何执行此操作的分步说明(请记住,我需要使用这个来处理从Nginx服务器调用的PHP curl函数)
谢谢
究竟是什么关系pickle和copy.deepcopy?他们分享了哪些机制,以及如何?
很明显这两个是密切相关的操作,并分享了一些机制/协议,但我不能围绕细节.
我发现的一些(令人困惑的)事情:
__[gs]etstate__,则会调用它们deepcopy的实例.这让我感到惊讶,因为我认为它们是特定的pickle,但后来我发现Classes可以使用相同的接口来控制用于控制酸洗的复制.但是,没有关于 __[gs]etstate__深度复制时如何使用的文档(如何使用返回的值__getstate__,传递给__setstate__什么?)deepcopy将是pickle.loads(pickle.dumps(obj)).但是,这不可能等同于deepcopy',因为如果一个类定义了一个__deepcopy__操作,那么使用这个基于pickle的deepcopy实现就不会调用它.(我还偶然发现了一个声明,即深度复制比pickle更普遍,并且有许多类型是深度可复制的,但不是pickleable.)(1)表示共性,而(2)表示pickle和之间的差异deepcopy.
最重要的是,我发现了这两个相互矛盾的陈述:
copy_reg:pickle,cPickle和copy模块在pickle /复制这些对象时使用这些函数
和
该复制模块不使用copy_reg注册模块
对此,一方面,是之间的关系/共性的另一个指示pickle和deepcopy,而在另一方面,有助于我的困惑......
[我的经验是使用python2.7,但我也很感激有关python2和python3之间的pickle/deepcopy差异的任何指示]
我正在使用IPython Qt控制台,当我从Ipython复制代码时,就会出现这样的情况:
class notathing(object):
...:
...: def __init__(self):
...: pass
...:
Run Code Online (Sandbox Code Playgroud)
有没有办法复制它们没有那些领先的三点和双立方?
PS我尝试了两个Copy并Copy Raw Text在上下文菜单中,它仍然是相同的.操作系统:Debian Linux 7.2(KDE).
这就是代码的方式
with open(pickle_f, 'r') as fhand:
obj = pickle.load(fhand)
Run Code Online (Sandbox Code Playgroud)
这适用于Linux系统,但不适用于Windows.它显示了EOFError.我必须使用rb模式使其在Windows上运行..现在这不适用于Linux.
为什么会这样,以及如何解决?
基本问题是:在做什么时会发生什么a[i] += b?
鉴于以下内容:
import numpy as np
a = np.arange(4)
i = a > 0
i
= array([False, True, True, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
我明白那个:
a[i] = x是相同的a.__setitem__(i, x),它直接分配给指示的项目ia += x是一样的a.__iadd__(x),它不到位此外但是当我这样做时会发生什么:
a[i] += x
Run Code Online (Sandbox Code Playgroud)
特别:
a[i] = a[i] + x吗?(这不是就地操作)i是:
int指数,或ndarray,或slice对象背景
我开始深入研究这个问题的原因是我在处理重复索引时遇到了非直观的行为:
a = np.zeros(4)
x = np.arange(4)
indices = np.zeros(4,dtype=np.int) # duplicate indices
a[indices] …Run Code Online (Sandbox Code Playgroud) 假设我有一个字符串
Str1 = "TN 81 NZ 0025"
str2 = "DL 11C AA 1111"
two = first2(str1)
print(two)
>>>TN
Run Code Online (Sandbox Code Playgroud)
如何获取这些字符串的前两个字母.我需要first2函数.
我读了这篇文章,退出了一个很好的面试问题,作者想出了一个work break问题并提出了三个解决方案.高效使用一个memoization算法和笔者表示,其最坏情况下的时间复杂度是O(n^2)因为the key insight is that SegmentString is only called on suffixes of the original input string, and that there are only O(n) suffixes.
但是,我发现很难理解它为什么O(n^2).有人可以给我一个提示或证据吗?
Work Break Problem:
Given an input string and a dictionary of words,
segment the input string into a space-separated
sequence of dictionary words if possible. For
example, if the input string is "applepie" and
dictionary contains a standard set of English words,
then …Run Code Online (Sandbox Code Playgroud) $ ./runtests.py -v tests/managers/test_customer.py:CustomerManagerTest.test_register_without_subscription --ipdb
...
test_register_without_subscription (tests.managers.test_customer.CustomerManagerTest) ...
- TRACEBACK --------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.7/unittest/case.py", line 331, in run
testMethod()
File "*****/tests/managers/test_customer.py", line 198, in test_register_without_subscription
1/0
ZeroDivisionError: integer division or modulo by zero
--------------------------------------------------------------------------------
> *****/tests/managers/test_customer.py(198)test_register_without_subscription()
197 def test_register_without_subscription(self):
--> 198 1/0
199 ...
ipdb> import sys
ipdb> sys.exc_info()
(<type 'exceptions.AttributeError'>, AttributeError("Pdb instance has no attribute 'do_sys'",), <traceback object at 0x47eb908>)
ipdb>
Run Code Online (Sandbox Code Playgroud)
我找不到任何ipdb help显示当前异常的命令.
做import sys; print sys.exc_info()不起作用.
目前我这样做:
try:
do_something_that_raises_an_exception() …Run Code Online (Sandbox Code Playgroud) 所以我在python中遇到了一些非常奇怪的东西.我尝试将列表的引用添加到自身.代码可能有助于证明我所说的比我能表达的更好.我正在使用IDLE编辑器(交互模式).
>>>l=[1,2,3]
>>>l.append(l)
>>>print(l)
[1,2,3,[...]]
>>>del l[:-1]
>>>print(l)
[[...]]
Run Code Online (Sandbox Code Playgroud)
到目前为止,输出是预期的.但是当我这样做的时候.
y=l[:]
print(y)
Run Code Online (Sandbox Code Playgroud)
对我而言,似乎输出应该是
[[...]]
Run Code Online (Sandbox Code Playgroud)
但它是
[[[...]]]
Run Code Online (Sandbox Code Playgroud)
显然,它不是创建列表的副本,而是在y中引用列表.
y [0]是l返回True.我似乎无法找到一个很好的解释.有任何想法吗?