我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文针对ndarray类型变量做平方或者开方操作,对应的功能必然来自于numpy了。本文的主角是np.square()np.sqrt(),它们传递普通数字类型参数的时候,就相当于math.sqrt()或者pow(s,2)了。如果传递的是array-like类型参数,才算是回归本心。

苏南大叔:python教程,numpy如何做乘方开方操作?求N次方 - numpy-square-sqrt
python教程,numpy如何做乘方开方操作?求N次方(图4-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验总结。本文测试环境:win10python@3.11.0numpy@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]

苏南大叔:python教程,numpy如何做乘方开方操作?求N次方 - np-square
python教程,numpy如何做乘方开方操作?求N次方(图4-2)

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.]

苏南大叔:python教程,numpy如何做乘方开方操作?求N次方 - np-sqrt
python教程,numpy如何做乘方开方操作?求N次方(图4-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.]

苏南大叔:python教程,numpy如何做乘方开方操作?求N次方 - pow-code
python教程,numpy如何做乘方开方操作?求N次方(图4-4)

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,蛮智能的。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python