python教程,numpy如何做乘方开方操作?求N次方
发布于 作者:苏南大叔 来源:程序如此灵动~
本文针对ndarray类型变量做平方或者开方操作,对应的功能必然来自于numpy了。本文的主角是np.square()和np.sqrt(),它们传递普通数字类型参数的时候,就相当于math.sqrt()或者pow(s,2)了。如果传递的是array-like类型参数,才算是回归本心。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验总结。本文测试环境:win10,python@3.11.0,numpy@1.24.2。注意:本文的主角np.square()和np.sqrt(),支持传递int/float/list/tuple/ndarray,就是不支持传递set。难道是因为set的天然去重无序的特性?
前文回顾
乘方/平方/二次方/二次幂/二次指数,这都说的是一回事,为啥这么多名字。对于普通的int或者float数值,如果做乘方或者开方操作,可以使用pow()函数,参考文章:
np.square()乘方
import numpy as np
print(np.square(2)) # 4
print(np.square((2,3))) # [4 9]
print(np.square([2,3])) # [4 9]
print(np.square(np.array([2,3]))) # [4 9]
# print(np.square({2,3})) # TypeError: unsupported operand type(s) for *: 'set' and 'set'输出:
4
[4 9]
[4 9]
[4 9]
np.sqrt()开方
import numpy as np
print(np.sqrt(9)) # 3.0
print(np.sqrt((4,9))) # [2. 3.]
print(np.sqrt([4,9])) # [2. 3.]
print(np.sqrt(np.array([4,9]))) # [2. 3.]
# print(np.sqrt({4,9})) # TypeError: unsupported operand type(s) for *: 'set' and 'set'输出:
3.0
[2. 3.]
[2. 3.]
[2. 3.]
pow()N次方开N次方
import numpy as np
# 二次乘方
print(pow(2,2)) # 4
# print(pow((2,3),2)) # unsupported
# print(pow([2,3],2)) # unsupported
# print(pow({2,3},2)) # unsupported
print(pow(np.array([2,3]),2)) # [4 9]
# 开二次方
print(pow(4,1/2)) # 2.0
print(pow(np.array([4,9]),1/2)) # [2. 3.]
# 三次乘方
print(pow(2,3)) # 8.0
print(pow(np.array([2,3]),3)) # [8. 27.]
# 开三次方
print(pow(27,1/3)) # 3.0
print(pow(np.array([8,27]),1/3)) # [2. 3.]
pow也可以处理N次方,换个参数就行。
math.pow()仅仅支持普通数字,不支持ndarray。np.pow()根本就不存在。pow()仅仅支持ndarray,不支持list/tuple,当然不支持set/dict了。
注意:这里的pow()不来自math.,也不来自np.。
题外话
这里有点题外话,
- 没有
math.square(),只有np.square()。 - 没有
np.pow(),只有pow()和math.pow()。 - 同时存在
math.sqrt()和np.sqrt()。而且对于普通数值运算,两者还一模一样,迷惑吧?
结束语
numpy里面的乘方.square(),以及开方.sqrt()。传递普通数字,就返回普通数字。传递ndarray,就会返回ndarray,蛮智能的。