假设我有以下函数:
import numpy, itertools
def my_func(x):
Z = 0
for y in itertools.product([-1, 1], repeat=10):
Z += numpy.exp(numpy.dot(x,y))
return numpy.log(Z)
对于不包含“太极端”值的输入向量,该函数工作得很好。但是,如果输入值太过极端,那么在某个时候,numpy.exp函数中就会出现溢出。下面是一个示例:
x = numpy.random.normal(5, 10
我有一个表达式,对于某些参数值,它会溢出。在这种情况下,我已经用纸和笔推导出了渐近结果应该是什么,当我有这样的情况时,我只需用我的解析表达式替换。
目前,我的代码是这样做的:
values = ExpressionThatOverFlows()
# Check the ones that overflow
indOverFlow = isnan(values)
# Set them to the values I derived by pen and paper
values[indOverFlow] = derivedValues
我的问题是I/O爆炸时会出现“警告”。我知道它警告我是好的,
当我运行这个程序时,我得到了一个溢出,我不知道如何修复它。该程序是一个方阵幂计算器,它从一个文本文件中获取输入。它从格式如下的文件中读取: 3 // size of a square matrix so in this case a 3X3 matrix
1 2 3 // all these numbers are inputs for each [i][j] entry
4 5 6
7 8 9
2// exponent to perform multiplication 这段代码有一个边缘情况,如果你输入矩阵大小为1,那么你只需要对下一行给定的指数给出的下一个int执行幂运算。这就是我遇到
所以我有这样的功能:
def logpp(X,m,S):
# Find the number of dimensions from the data vector
d = X.shape[1]
# Invert the covariance matrix
Sinv = np.linalg.inv(S)
# Compute the quadratic terms for all data points
Q = -0.5*(np.dot(X-m,Sinv)*(X-m)).sum(axis=1)
# Raise them quadratic terms to the exponential
Q
我有一个非常简单的例子,它表明NumPy的np.exp比Matlab慢了大约10倍。如何加快Python的速度?我正在运行32位Python2.7,NumPy版本为1.11.3,而numpy使用的是MKL和lapack库。
而且,时间上的差异太大了,我不认为计时机制有很大的影响。
Python中的代码示例:
import numpy as np
import timeit
setup='import numpy as np; import numexpr as ne; n=100*1000; a = np.random.uniform(size=n)'
time = time
我想从向量a和b中计算协方差矩阵,比如k[i][j] = exp( -(a[i]-b[j])**2 )。
在numpy中,我可以这样写,
import numpy as np
r = np.subtract.outer(a, b)
k = np.exp(-r*r)
在PyTorch中,我可以编写简单的代码,但它比numpy慢。
import torch
for i in range(len(a)):
for j in range(len(b)):
k[i][j] = torch.exp( -(a[i]-b[j])**2 )
如何使用PyTorch编写高效的代码?
例如,是否可以将numpy.exp或类似的逐点运算符应用于scipy.sparse.lil_matrix或其他稀疏矩阵格式中的所有元素?
import numpy
from scipy.sparse import lil_matrix
x = numpy.ones((10,10))
y = numpy.exp(x)
x = lil_matrix(numpy.ones((10,10)))
# y = ????
numpy.exp(x)或scipy.exp(x)产生AttributeError,numpy.exp(x.data)产生同样的结果。
谢谢!
我试图从一个指数中获得精确值,该指数得到一个非常小的浮点数作为输入,并给出结果0。
您可以使用以下代码重现该问题:
import numpy as np
from math import sqrt, log, exp, pi
k = np.array([[-746.9292399]])
z = exp(k)
print(z)
其结果将是743.0,对于我的pc,任何小于-100的结果都将是0
我尝试使用mpmath来解决这个问题,如下所示:
import numpy as np
from math import sqrt, log, exp, pi
import mpmath as mp
我正在编写一个用两个参数(a、b)初始化对象的类。其目的是将该类的实例分配给变量,这样我就可以用Python代码象征性地编写一个等式,但让操作符重载在a和b上执行唯一的操作。
import numpy as np
class my_class(object):
def __init__(self, a, b):
self.value1 = a
self.value2 = b
# Example of an overloaded operator that works just fine
def __mul__(self, othe
我使用numpy.meshgrid方法在Python语言中绘制3D图。这个图是关于变量d1, d2的,但是我有一个由7个元素的数组组成的函数,这是3个独立于d1, d2的元素。当我试图绘制我的图表时,我遇到了这个错误: operands could not be broadcast together with shapes (7,) (120,120) 当我调试我的代码时,我发现独立于d1, d2的数组元素的形状为1,而其他数组元素的形状为120。如何使用numpy.meshgrid方法绘制这样的函数? 谢谢。整个代码如下: import numpy
from mpl_toolkits.mp
我刚刚遇到了一个挑战,声称被google 2004所使用。
(the first 10-digit prime in e).com
与此无关,我想接受挑战,用python来解决它。
>>> '%0.52f' % math.exp(1)
'2.71828182845904509079**5598298427**6488423347473144531250'
>>> '%0.52f' % numpy.exp(1)
'2.71828182845904509079**5598298427**648842334
我在有限的开发环境中工作。我在用Python写神经网络。我没有访问numpy的权限,事实上,我甚至不能导入数学模块。所以我的选择有限。我需要计算sigmoid函数,但是我不确定exp()函数是如何工作的。我理解指数,我可以使用如下代码:
base = .57
exp = base ** exponent
但是我不确定指数应该是多少?像numpy.exp()这样的函数是如何计算指数的?这就是我要复制的东西。
我在理解下面的数值计算时遇到了困难。我有一个有两个变量的函数,r和gamma。现在我希望将该函数的根绘制为从0到500的伽马函数。我知道如何使用lambdify在变量的一维数组上计算函数。然而,我不明白如何使渐近找到给定变量γ的函数的根,然后遍历从0到500的许多伽马值。
import numpy as np
import sympy as sm
import sympy.mpmath as mpmath
from sympy.interactive import printing
printing.init_printing(use_latex=True)
r, gamma = sm.sy
当我在我的Surface Pro X上安装32位Anaconda,并试图在Jupyter笔记本中运行import numpy和pandas时,我得到了这个错误。
我尝试使用conda update numpy更新包。
C:\Users\mechm\Anaconda3\lib\site-packages\numpy\core\getlimits.py:174: RuntimeWarning: divide by zero encountered in exp2
eps=exp2(ld(-112)),
C:\Users\mechm\Anaconda3\lib\site-packages\num