#!/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 如果是标量则会直接作用到数组中的每个元素上
# 给出广播示意图:
# 
# 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[ ]: