#!/usr/bin/env python # coding: utf-8 #

Table of Contents

#
# In[24]: import numpy as np # In[25]: #全部行都能输出 from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" # # ndarray对象的核心之广播功能(broadcasting) # 术语广播是指 NumPy 在算术运算期间处理不同形状的数组的能力。对数组的算术运算通常在 # 相应的元素上进行。如果两个阵列具有完全相同的形状,则这些操作被无缝执行。 # 如果两个数组的维数不相同,则元素到元素的操作是不可能的。然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。 # # 广播内在机制非常繁琐,这里给一种简单的规则描述,必须满足一下规则才能广播: # # - 1 两个数组的维度必须相同 # - 2 如果维度不同,会在维度少的数组上增加维度,并使得该维度的长度为1 # - 3 有且仅有一个维度的长度不同,而且该值必须是1 # - 4 广播会在长度为1的那个维度上进行 # - 5 如果是标量则会直接作用到数组中的每个元素上 # 给出广播示意图: # ![image.png](attachment:image.png) # In[8]: #第一幅图 np.arange(3)+5 # In[9]: # 第二幅图 a = np.ones((3, 3)) b = np.arange(3) a b # In[10]: a+b # In[11]: # 第三幅图 a = np.arange(3).reshape(3, 1) a # In[12]: b = np.arange(3) b # In[13]: a+b # In[ ]: # In[ ]: # # 算术运算的相关函数 # 用于执行算术运算(如 add() ,subtract() ,multiply() 和 divide() )的输入数组必须具 # 有相同的形状或符合数组广播规则。 # |**数学运算函数**|| # | -------------------------- | ---------------------------------------- | # | add(x1,x2 ) | 按元素添加参数,等效于 x1 + x2 | # | subtract(x1,x2) | 按元素方式减去参数,等效于x1 - x2 | # | multiply(x1,x2) | 逐元素乘法参数,等效于x1 * x2 | # | divide(x1,x2) | 逐元素除以参数,等效于x1 / x2 | # | exp(x) | 计算e的x次方。 | # | exp2(x) | 计算2的x次方。 | # | power(x1,x2) | 计算x1的x2次幂。 | # | mod(x) | 返回输入数组中相应元素的除法余数. | # | log(x) | 自然对数,逐元素。 | # | log2(x) | *x*的基础2对数。 | # | log10(x) | 以元素为单位返回输入数组的基数10的对数。 | # | expm1(x) | 对数组中的所有元素计算`exp(x) - 1` | # | log1p(x) | 返回一个加自然对数的输入数组。 | # | sqrt(x) | 按元素方式返回数组的正平方根。 | # | square(x) | 返回输入的元素平方。 | # | sin(x) | 三角正弦。 | # | cos(x) | 元素余弦。 | # | tan(x) | 逐元素计算切线。 | # | around(x) | 四舍五入到所需精度的值。decimals 表示要舍入的小数位 | # | floor(x) | 向下取整 | # | ceil() | 向上取整 | # In[38]: a = np.arange(9, dtype = np.float_).reshape(3,3) b = np.array([10,11,12]) a b # In[39]: #执行数组的加法 np.add(a, b) a+b # In[40]: #执行数组的减法 np.subtract(a,b) a - b # In[41]: #执行数组的位乘法 np.multiply(a,b) a * b # In[36]: #执行数组的位除法 np.divide(a,b) a / b # ## 练习 # In[37]: a = np.arange(1,17).reshape(4, 4) a # ### 计算e的x次方,x是a中的每一个元素 # In[28]: #计算e的x次方,x是a中的每一个元素 np.exp(a) # ### 计算2的x次方,x是a中的每一个元素 # In[29]: #计算2的x次方,x是a中的每一个元素 np.exp2(a) # ### 对数组中的所有元素计算exp(x) - 1 # In[31]: # 对数组中的所有元素计算exp(x) - 1 np.expm1(a) # In[ ]: # In[ ]: # In[ ]: