我正在使用来自两个不同库的两个不同的装饰器.让我们说:@decorator1(param1, param2)和@decorator2(param3, param4).我经常在许多功能中使用:
from moduleA import decorator1
from moduleB import decorator2
@decorator2(foo='param3', bar='param4')
@decorator1(name='param1', state='param2')
def myfunc(funcpar1, funcpar2):
...
Run Code Online (Sandbox Code Playgroud)
由于它每次都会发生,我想创建一个处理它们的自定义装饰器.就像是:
@mycustomdecorator(name='param1', state='param2',
foo='param3', bar='param4')
def myfunc(funcpar1, funcpar2):
...
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标?
我正在使用以下代码从生成器创建带状矩阵g:
def banded(g, N):
"""Creates a `g` generated banded matrix with 'N' rows"""
n=len(g)
T = np.zeros((N,N+n-1))
for x in range(N):
T[x][x:x+n]=g
return T
Run Code Online (Sandbox Code Playgroud)
用法很简单:
banded([1,2,3], 3)
Run Code Online (Sandbox Code Playgroud)
它返回
[1, 2, 3, 0, 0]
[0, 1, 2, 3, 0]
[0, 0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
例如,它将主要用于解决具有给定模板的有限差分模型 (-1, 1)
有没有更好的方法来生成模板?我找不到任何好的 NumPy 函数。
我的意思是,更快,使用更少的内存,从 python 中删除循环并发送到 Numpy 堆栈。其中任何(或全部)都是改进。
如何指定在 paramiko ssh/sftp 连接上使用的不同密码?(类似于 scp/ssh 中的 -c 命令行)。
我尝试过以下代码:
self.sshclient = paramiko.SSHClient()
self.sshclient.load_system_host_keys()
self.sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.sshclient.connect(hostname, **ssh_kwargs)
self.transport = self.sshclient.get_transport()
self.transport.get_security_options().ciphers = ('arcfour128',)
self.transport.set_keepalive(keepalive)
self.channel = self.transport.open_session()
self.channel.settimeout(timeout)
Run Code Online (Sandbox Code Playgroud)
但在调试时我可以看到:
2016/02/26 15:27:47 DEBUG Ciphers agreed: local=aes128-ctr, remote=aes128-ctr
2016/02/26 15:27:47 DEBUG using kex diffie-hellman-group1-sha1; server key type ssh-rsa; cipher: local aes128-ctr, remote aes128-ctr; mac: local hmac-sha1, remote hmac-sha1; compression: local none, remote none
Run Code Online (Sandbox Code Playgroud)
我在某处读到 Connect 应该在导致我的反转之后发生(get_security_options()似乎传输与连接有关)。self.transportNoneType
我正在尝试避免使用for循环来运行我的计算.但我不知道该怎么做.我有一个w形状矩阵(40,100).每条线在一段t时间内保持一个波浪的位置.例如,第一行 w[0]是初始条件(也是w[1]出于我将要展示的原因).
计算我使用的下一行元素,用于每个t和x在形状范围:
w[t+1,x] = a * w[t,x] + b * ( w[t,x-1] + w[t,x+1] ) - w[t-1,x]
Run Code Online (Sandbox Code Playgroud)
其中a和b是基于方程解的一些常量(它其实并不重要), ,a = 2(1-r),.b=r 波速r=(c*(dt/dx))**2在哪里,与增量和方向有关.cdtdxxt
有没有办法避免像for循环:
for t in range(1,nt-1):
for x in range(1,nx-1):
w[t+1,x] = a * w[t,x] + b * ( w[t,x-1] + w[t,x+1] ) - w[t-1,x]
Run Code Online (Sandbox Code Playgroud)
nt并且nx是w矩阵的形状.
我正在处理scipy.stats.normPDF。我想知道我是否做错了什么(也许是),因为正态分布上的 PDF 之和返回的值大于 1,并且根据定义,概率密度函数的总和应为 1。我会如果总和达到 ~0.99 就可以了(因为我没有对区间内的所有值求和),但 20 不太可接受。下面显示了一个最小示例
from scipy.stats import norm
lower_bound = norm.ppf(0.01)
upper_bound = norm.ppf(0.99)
N = 100
x = np.linspace(lower_bound, upper_bound, 100)
P = norm.pdf(x)
print(np.sum(P))
Run Code Online (Sandbox Code Playgroud) 我的代码如下:
def xgauss(self):
m, n = self.m, self.n
M = self.copy()
for k in range(n):
for i in range(k + 1, m):
yield M
if not likezero(M[i][k]):
lam = M[i][k] / M[k][k]
M[i] = M[i] - lam * M[k]
yield M
Run Code Online (Sandbox Code Playgroud)
现在足以说ifzero如果值小于精度则返回true(对于数值比较);-)
我的目标是返回高斯消除算法的每次迭代以供学习(课堂).
我有一些测试输入:
In [77]: A
Out[77]:
Matrix([
[ 1, 4, 1],
[ 1, 6, -1],
[ 2, -1, 2]
])
In [78]: Ab
Out[78]:
Matrix([
[ 1, 4, 1, 7],
[ 1, 6, -1, 13],
[ 2, -1, …Run Code Online (Sandbox Code Playgroud)