Python NumPy代码中5.*inputval[i]的点运算符含义技术问询
关于Python代码中
5.写法的说明 你观察到的5.*inputval[i]中的.并非点运算符,而是Python浮点数字面量的简写语法。
- 语法本质
Python允许省略浮点数字面量末尾小数点后的0,因此5.是5.0的合法简写,2.是2.0的合法简写。你看到的5.*本质是5.0 *,和点运算符没有任何关系,只是省略空格+浮点简写叠加后的写法。 - 和不带点写法的区别
不带点的5是整型字面量,带点的5.是浮点型字面量,二者的差异和5与5.0的差异完全一致:- 当参与算术运算时,若另一个操作数是浮点型(比如你代码中的
inputval[i]、np.pi都是浮点型),二者的计算结果没有任何差异 - 这种写法是部分开发者的编码习惯,目的是显式声明此处参与运算的是浮点型,避免不同语言整型运算逻辑差异带来的潜在兼容问题
- 当参与算术运算时,若另一个操作数是浮点型(比如你代码中的
- 代码验证
你提供的代码片段:
outputval=np.zeros(len(inputval)) # 返回一个给定形状和类型、填充值为0的新数组 for i in range(len(inputval)): if np.random.randn(1)>0.5: # 从“标准正态”分布中返回一个或多个样本 outputval[i]=2.*np.sin(2.0*np.pi/5.*inputval[i])
完全等价于将所有2.、5.替换为2.0、5.0的写法,运行结果不会有任何区别:
outputval=np.zeros(len(inputval)) # 返回一个给定形状和类型、填充值为0的新数组 for i in range(len(inputval)): if np.random.randn(1)>0.5: # 从“标准正态”分布中返回一个或多个样本 outputval[i]=2.0*np.sin(2.0*np.pi/5.0*inputval[i])
内容的提问来源于stack exchange,提问作者Alexis
相关产品推荐
相关产品推荐

