2.1.运算 2018/11/11===================================================================
1.算术运算 #+ - * /
#都按元素运算使用标量:数组与标量的算术运算也会将标量值传播到各个元素a = np.array([1, 2, 3, 4])
a + 1 # array([2, 3, 4, 5])
2 ** j #array([1, 2, 4, 8, 16], dtype=int32)c = np.ones((3, 3)) #数组乘法不是矩阵乘法:
c * c #普通数组乘法
c.dot(c) # 矩阵乘法====================================================================
2.函数运算:2.1.通用函数ufunc:#快速元素级数组函数
#对ndarray 数组中元素单独运算,接受标量值,产生一或多个标量值的矢盐化包装器。
---------------------------------------------------
# 2.1.1.一元函数:
arr= np.arange(5)np.log(a) # array([-inf, 0., 0.69314718, 1.09861229, 1.38629436])
np.sqrt(arr) #array([ 0. , 1. , 1.4142, 1. 7321 ])
---------------------------------------------------
# 2.1.2 二元函数:#返回一个结果数组
x = randn(8) #array([ 0.0749, 0.0974, 0.2002, -0.2551, 0.4655, 0.9222, 0.446 , -0.9337))
y = randn(8 ) #array([ 0.267 , -1.1131, - 0. 3361, o.6117, -1.2323, 0.4788, 0. 4315, -o. 7147])
np.maximum(x, y) #元素级最大值
#array([ 0.267 , 0.0974, 0.2002, 0.6111, 0.4655, 0.9222, 0.446 , -0.7147])
---------------------------------------------------
# 2.1.3.返回多个数组。
# modf是Python内置函数divmod的矢量化版本,用于浮点数数组的小数和整数部分。
arr= randn(7) * 5
np.modf(arr) #(array([-0.6808, 0.0636, -0 .386 , 0 . 1393, -0.8806, 0.9363, -o.883 ]),
# array([-2., 4., -3-, 5-, -3-, 3-, -6.]))========================================================================
2.2.利用数组进行数据处理# 1.2.1.说明:
# 1)NumPy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需编写循环)
# 2)用数组表达式代替循环的做法通常被称为矢量化。
# 3)一般来说,矢量化数组运算要比等价的纯Python方式快上一两个数量级。
# 4)不同大小的数组之闹的运算叫做广播;广播一种专们对矢量化计算的强大手段。# 1.2.2.计算sqrt(x^2 + y^2 )
x = np.arange(0, 10)
x1, x2 = np.meshgrid(x, x+10) #[x,x+10]
x1 #array([[0, .., 9],...,[0, .., 9]])#100个数据
z = np.sqrt(x1 * 10+1 + x2 * 2-8)
np.around(z,decimals=1) #四舍五入array([[ 3.6, 4.8, 4.7, 6.6, 7.3, 7.9, 8.5, 9.1, 9.6, 10.1],
...,
[ 4.6, 6.4, 7.1, 7.8, 8.4, 9. , 9.5, 10. , 10.5, 11. ]]) #100个数据=========================================================================
3.将条件逻辑表述为数组运算
# 3.1.numpy.where 函数是三元表达式x if condition else y的矢量化版本。
-------------------------------------------------------
# 示例1
# 根据cond 中的值选取xarr和yarr的值:当cond=True时选xarr的值,否则选yarr
xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
cond = np.array( [True, False, True, True, False])# 1).列表推导式实现:
result= [ ( x if c else y ) for x, y, c in zip(xarr, yarr, cond)]# [1.1, 2.2, 1.3, 1.4, 2.5]
# 问题:对大数组处理速度不是很快;不能用于多维数组。# 2)使用np.where :
result = np.where(cond, xarr, yarr) # [1.1, 2.2, 1.3, 1.4, 2.5]
-------------------------------------------------------
# 示例2
# 随机数当数据为正时设为2,为负时设为-2
arr= np.random.randn{4, 4)
np.where(arr>0,2, np.where(arr<0,-2,arr) )
-------------------------------------------------------
# 示例3:
# 根据bool数组cond1和cond2组合实现不同的赋值
# 传递给where的数组大小可以不相等,甚至可以是标量值。result = [ ]
cond1=np.array([True,False])
cond2=np.array([False,True])#1)for 语句
for i in range(2):
if cond1[i] and cond2[i]:
result.append(0)
elif cond1[i]:
result . append(1)
elif cond2[i]:
result.append(2)
else:
result.append(3)result#[1, 2]# 2)for循环改写成嵌套where表达式:
np.where(cond1 & cond2,0,np.where(cond1,1,np.where(cond2,2,3)))# array([1, 2])======================================================================
4.比较:#4.1.元素比较
a = np.array([1, 2, 3, 4])
b = np.array([4, 2, 2, 4])a == b # array([False, True, False, True], dtype=bool)
a > b # array([False, False, True, False], dtype=bool)
------------------------------------------------------------
#4.2.数组比较:
a = np.array([1, 2, 3, 4])
b = np.array([4, 2, 2, 4])
c = np.array([1, 2, 3, 4])np.array_equal(a, b) # False
np.array_equal(a, c) # True
((a <= b) & (b <= c)).all() # falsenp.all([True, True, False]) # False
np.any([True, True, False]) # True# 可用于数组比较:
a = np.zeros((100, 100))
np.any(a != 0) # False-------------------------------------------------------------
# 4.3.逻辑运算:
a = np.array([1, 1, 0, 0], dtype=bool)
b = np.array([1, 0, 1, 0], dtype=bool)np.logical_or(a, b) # array([ True, True, True, False], dtype=bool)
np.logical_and(a, b) # array([ True, False, False, False], dtype=bool)==================================================================
5..转置:
a = np.triu(np.ones((3, 3)), 1) # see help(np.triu)
a
# array([[ 0., 1., 1.],
# [ 0., 0., 1.],
# [ 0., 0., 0.]])
a.T
# array([[ 0., 0., 0.],
# [ 1., 0., 0.],
# [ 1., 1., 0.]])'''==================================================================
6.广播
# 如果NumPy可以转换这些数组,以便它们都有相同的大小:这种转换称为广播.a = np.arange(0, 40, 10)
a.shape # (4,)
a = a[:, np.newaxis] # adds a new axis -> 2D array
a.shape # (4, 1)
a
# array([[ 0],
# [10],
# [20],
# [30]])
a + b
# array([[ 0, 1, 2],
# [10, 11, 12],
# [20, 21, 22],
# [30, 31, 32]])
===================================================================
7.附录:数学函数 
  函数 说明
  abs, fabs 整数, 浮点数或复数绝对值 。非复数值fabs更快
  sqrt 计算各元素平方根 。ar r ** 0.5
  squa re 计算各元素平方。arr ** 2
  exp 计算各元素指数e^x
  log, log10, log2, lg1p 自然对数 (e ), 对数 (底数e,10,21+x )
  sign  各元素的正负号 :1 ( 正数), 0 ( 零) , ( 负数) 
  ceil 计算各元素ceiling值 ,即大于等于该值的最小整数
  floor 计算各元素floor值 ,即小于等于该值的最大整数  
  rint 将各元素值四舍五入到最接近的整数 ,保留dtype 
  modf  将数组小数和整数部分以两个独立数组的形式返回
  isnan 返回一个表示哪些值是NaN(不是数字) 的布尔型数组
  isfinite 返 回一个表示哪些元素是有穷  (非inf ,非NaN )的布尔型数组 
  isinf 返 回一个表示哪些元素是无穷的布尔型数组 
  cos ,cosh ,sin, sinh,tan,tanh 普通型和双曲型三角函数
  arccos, a rccosh, aresin, 反三角函数
  arcsinh, arctan, arctanh   反三角函数
  logical_ not                         计算各元素not x的真值。相当于- arr
  二元ufunc函数  
  add 数组中对应元素相加
  subtract  数组中对应元素相减
  multiply 数组元素相乘
  divide 除法
  floor_divide 向下取整除法 (丢弃余数)
  power a^b
  maximum,fmax 元素级最大值计算。fmax将忽略NaN 
  minimum,fmin 元素级最小值计算 。fmin将忽略NaN
  mod 元素级求模计算 ( 除法的余数)
  copysign 将第二个数组中值符号复制给第一个数组中的值
  greater,greater_equal, less, 执行

numpy 学习汇总5-数组运算 tcy相关推荐

  1. numpy 学习汇总18 - 数学运算 (集合,复数)( 基础学习 tcy)

    集合运算 2018/11/11 1.np.unique 唯一值 # 它用干找出数组中的唯一值并返回已排序的结果names= np.array( [ 'Bob','Joe ',' Will', ' Bo ...

  2. numpy 学习汇总6-统计函数 tcy

    2.2.统计函数 2018/11/11====================================================================# sum,mean及标准 ...

  3. numpy 学习汇总18.2 - 数学运算( 基础学习 tcy)

    数学运算 2018/6/18 2018/11/29 1.算术运算 # +, - ,*,/,//,%,divmod(),** or pow() # 1)运算符 a=np.arange(1,7).resh ...

  4. numpy 学习汇总15 -广播 ( 基础学习 tcy)

    广播 2018/6/19 2018/11/21 =================================================================== 1.说明:广播描 ...

  5. numpy 学习汇总33 - 索引切片( 初步学习 tcy)

    索引切片 2018/6/18 2018/11/26===================================================================== 1. 索引 ...

  6. numpy学习2:数组创建方式

    一.前言 Numerical Python,即数值Python包,是Python进行科学计算的一个基础包,所以是一个掌握其他Scipy库中模块的基础模块,一定需要先掌握该包的主要使用方式. 官网:ht ...

  7. 【numpy学习笔记】数组的创建和基本运算

    1. 创建numpy数组 1.1 通过tuple和list创建数组 import numpy as np 通过tuple t=(1,2,3) a=np.array(t,dtype= 'int') #a ...

  8. Numpy学习笔记三——数组切片、bool索引、掩码和花哨索引

    Numpy数组切片.bool索引.掩码和花哨索引 数组切片(slice) 数组切片的公式为 my_array[start: end: step, start: end: step] #示例1: imp ...

  9. numpy学习之创建数组

    1.使用array函数创建数组 import numpy as np ndarray1 = np.array([1, 2, 3]) array([1, 2, 3]) ndarray2 = np.arr ...

最新文章

  1. Java基础班学习笔记(8)
  2. React router 4 获取路由参数,跨页面参数
  3. hdu3001(三进制状压)
  4. SQLServer存储引擎——05.索引的结构和分类
  5. js中的arguments 参数
  6. 数学建模清风第二次直播:模拟退火算法
  7. 未能比较数组中的两个元素_算法3 寻找两个正序数组的中序数
  8. NOIP2015 D1 解题报告
  9. python赋值的数组无序怎么办_Python的多维空数组赋值方法
  10. java 指针 引用_java中的引用与c中的指针
  11. python整数缓存问题
  12. mysql数据库复制数据表时的风险
  13. Python self,init,对象属性
  14. Windows下使用SSH命令登录Linux服务器
  15. Win10不相邻的磁盘怎么合并,一学就会
  16. 根域名服务器作用,域名系统的主要功能是什么?域名系统中的本地域名服务器、根域名服务器、顶级域名 - 问答库...
  17. IBM建立大中华区云计算中心供验证测试
  18. [概率论]艾波寧捎信(poisson分布)
  19. 初入职场如何时间管理课程总结-B站
  20. 李宏毅ML笔记12:半监督

热门文章

  1. uint64_t 头文件 linux,32/64位平台printf uint64的方法
  2. BigBrother的大数据之旅 Day 4 Linux(4)
  3. 基于JAVA在线点餐外卖系统设计与实现 开题报告
  4. Mac -- 启动ssh服务
  5. 微信阅读html,微信公众号文章查看HTML代码(HTML代码修改方法)
  6. 【Bootstrap-学习小结】
  7. service_cmn
  8. python怎么模拟鼠标移动点击_Python模拟鼠标点击——如何正确的肝阴阳师
  9. cad一键卸载工具叫什么_autodesk软件一键卸载工具
  10. php自定义微博尾巴,怎么自定义微博小尾巴 (无需工具)