Python 将标量提高到矩阵元素的幂次方
我想使用numpy计算以下内容:Python 将标量提高到矩阵元素的幂次方,python,numpy,Python,Numpy,我想使用numpy计算以下内容: density = 1.474085291*(0.9998541833**h) 其中h是1*12矩阵。我希望基数为0.9998541833,幂(指数)为矩阵h的元素。 我尝试了文档,但找不到解决方案。非常简单:您似乎已经准备好了代码。只需组成您的阵列h,您就可以开始了: >>> import numpy as np >>> h = np.array([1, 2, 3, 4, 5, 6]) >>> h arr
density = 1.474085291*(0.9998541833**h)
其中h
是1*12矩阵
。我希望基数为0.9998541833,幂(指数)为矩阵h
的元素。
我尝试了文档,但找不到解决方案。非常简单:您似乎已经准备好了代码。只需组成您的阵列
h
,您就可以开始了:
>>> import numpy as np
>>> h = np.array([1, 2, 3, 4, 5, 6])
>>> h
array([1, 2, 3, 4, 5, 6])
>>> density = 1.474085291*(0.9998541833**h)
>>> density
array([ 1.47387034, 1.47365543, 1.47344055, 1.47322569, 1.47301087,
1.47279608])
如果“h”被定义为np.matrix呢?@Ehsan我建议将解决方案改为这个。此处无需使用
full
功能。此外,我建议您阅读有关numpy广播的内容。您应该显示错误。如果h
是常规numpy数组,那么代码应该可以工作。只有当h
是np.matrix
时,**
才有问题。但是np.power(.99,h)
仍然有效。这是另一个避免使用np.matrix
的原因,如果你真的不需要它,np.matrix
的问题是它重新定义了**
(\uuuu pow\uuuuu
)为矩阵幂运算符,np.linalg.matrix\u power
。如np.矩阵(眼睛(3))**4
。同样地,*
被重新定义为矩阵乘法(如np.dot
)。np.array(base)**h
应该足够了。@hpaulj,难道不能在引擎盖下创建一个完整的h.shape数组吗?在性能上会有一些不同吗?如果我错了,请纠正我,但我猜base**h只是语法上的糖分。广播完整的h数组时,shape
是不必要的。base
以不需要拷贝的方式复制<代码>基本**h被翻译成base.\uuu pow\uuuu(h)
。
base = 0.9998541833
density = 1.474085291 * np.array(base)**h