系列文章:
python数据分析(一)——numpy数组的创建
python数据分析(三)——numpy读取本地数据和索引
python数据分析(四)——numpy中的nan和数据的填充
python数据分析(五)——numpy+matplotlib实例


numpy数组的计算

  • 一、数组形状转换
  • 二、数组计算

一、数组形状转换

代码如下(示例):

In[60]:a = np.array([3, 4, 5, 6, 7, 8], [4, 5, 6, 7, 8, 9])
In[61]:a
Out[61]:
array([[3, 4, 5, 6, 7, 8],[4, 5, 6, 7, 8, 9]])查看数组的形状:
In[62]:a.shape
Out[62]:(2, 6)修改数组的形状:
In[63]:a.reshape(3, 4)
Out[63]:
array([[3, 4, 5, 6],[7, 8, 4, 5],[6, 7, 8, 9]])In[64]:a.shape
Out[64]:(2, 6)
#为什么a还是2行6列的数组呢?
只是输出改变了形状,但本质没有发生变化In[65]:b = a.reshape(3, 4)In[66]:b.shape
Out[66]:(3, 4)In[67]:b
Out[67]:
array([[3, 4, 5, 6],[7, 8, 4, 5],[6, 7, 8, 9]])把数组转化为1维度数据
In[69]:b.reshape(1, 12)
Out[69]:array([[3, 4, 5, 6, 7, 8, 4, 5, 6, 7, 8, 9]]) #这是二维数组 reshape中两个数值表示二维数组In[70]:b.flatten()
Out[70]:array([3, 4, 5, 6, 7, 8, 4, 5, 6, 7, 8, 9])

np.shape和np.reshape中一个值表示一维数组,两个值表示二维数组,三个值表示三个数组

数组形状转换

import numpy as np# 一维数组
t1 = np.arange(12)
print(t1)
print(t1.shape)# 二维数组
t2 = np.array([[1, 2, 3], [4, 5, 6]])
print(t2)
print(t2.shape)# 三维数组
t3 = np.array([[[1, 2, 3, 4], [5, 6, 7, 8]], [[7, 8, 9, 10], [11, 12, 13, 14]], [[1, 2, 3, 4], [5, 6, 7, 8]]])
print(t3)
print(t3.shape)# 修改数组维度
t4 = np.arange(12)
print(t4.reshape(3, 4))print(12*"-")# 两个三行四列的数组
t5 = np.arange(24).reshape(2, 3, 4)
print(t5)# t5输出改变了形状,但本质没有产生变化
print(t5.reshape(4, 6))
print(t5)# 如果想要改变数组,重新赋值
t5 = t5.reshape(4, 6)
print(t5)# 变为一维数组
t5 = t5.reshape(24, )
print(t5)# 变为二维数组 两个中括号
t5 = t5.reshape(24, 1)
print(t5)t5 = t5.reshape(1, 24)
print(t5)# 变为一维数组
print(t5.flatten())

二、数组计算

  • 数组与数值之间的计算类似于广播机制,数组中的每一个数都进行同样的加减乘除操作
  • 相同形状的数组之间的计算是对应位置直接进行加减乘除操作,和线性代数还是有区别的
  • 不同形状的数组但某一维度相同时,维度相同的进行对应位置的运算,例如行的维度相同,都是n个元素,直接进行行跟行之间对应位置的运算;列的维度相同,都是n个元素,直接进行列跟列之间对应位置的运算
  • 维度不同的数组之间进行运算会直接报错,因为程序无法一一对应

数组和数的计算:

In[71]:a
Out[71]:
array([[3, 4, 5, 6, 7, 8],[4, 5, 6, 7, 8, 9]])加法减法:
In[72]:a+1
Out[72] :
array([[4, 5, 6, 7, 8, 9],[5, 6, 7, 8, 9, 10]])乘法除法:
In[73]: a*3
Out[73] :
array([[9, 12, 15, 18, 21, 24],[12, 15, 18, 21, 24, 27]])

numpy的广播机制造成的,在运算过程中,加减乘除的值被广播到所有元素上面

数组和数组的计算:

In [78]: a
Out[78]:
array([[3, 4, 5, 6, 7, 8],[4, 5, 6, 7, 8, 9]])In [79]: b
Out[79]:
array([[21, 22, 23, 24, 25, 26],[27, 28, 29, 30, 31, 32]])数组和数组的加减法:
In [80]: a+b
Out[80]:
array([[24, 26, 28, 30, 32, 34],[31, 33, 35,37,39,41]])数组和数组的乘除法:
In [81]: a*b
Out[81]:
array([[63, 88, 115, 144, 175, 208],[108, 140, 174, 210, 248 ,288]])In [92]: a #2行6列的数組
Out[92]:
array([[3, 4, 5, 6, 7, 8],[4, 5, 6, 7, 8, 9]])In [93]: c #1行6列的数組
Out[93]: array([1, 2, 3, 4, 5, 6])In [94]: a-c
Out[94]:
array([[2, 2, 2, 2, 2, 2],[3, 3, 3, 3, 3, 3]])In [95]: a*C
Out[95]:
array([[3, 8, 15, 24, 35, 48],[4, 10, 18, 28, 40, 54]])In [114]: a #2行6列的数组
Out[114]:
array([[3, 4, 5, 6, 7, 8],[4, 5, 6, 7, 8, 9]])In [115]: c #2行1列的数組
Out[115]:
array([[1],[2]])In [116]: c+a #相加
Out[116]:
array([[4, 5, 6, 7, 8, 9],[6, 7, 8, 9, 10, 11]])In [117]: a*c #相乘
Out[117]:
array([[3, 4, 5, 6, 7, 8],[8, 10, 12, 14, 16, 18]])In [118]: с*a #相乘
Out[118]:
array([[3, 4, 5, 6, 7, 8],[8, 10, 12 , 14, 16, 18]])

广播原则:

  • 如果两个数组的后援维度(即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为他们是广播兼容的,广播会在缺失和(或)长度为1的维度上进行

问题一:shape为(3, 3, 3)的数组能够和(3, 2)的数组进行计算吗?

回答一不可以,三块三行三列的数组无法和三行两列的数组进行计算


问题二:shape为(3, 3, 2)的数组能够和(3, 2)的数组进行计算吗?

回答二可以,每一块也都是三行两列的数组,可以直接进行数组和数组的计算


问题三:shape为(3, 3, 2)的数组能够和(3, 1) / (1, 2)的数组进行计算吗?

回答三可以,后援数组其中一方为1,可以进行计算


python数据分析(二)——numpy数组的计算相关推荐

  1. Python数据分析(二): Numpy技巧 (4/4)

    numpy.pandas.matplotlib(+seaborn)是python数据分析/机器学习的基本工具. numpy的内容特别丰富,我这里只能介绍一下比较常见的方法和属性. 第一部分: http ...

  2. Python数据分析(7)-numpy数组操作

    本节主要介绍numpy中在数组上的一些常规操作,在数组级别上包括数组迭代,数组拼接.数组分割,在元素级别包括元素迭代.元素增加.元素删除等. 本节的内容比较重要,同时也比较基础,是养成良好的编程习惯的 ...

  3. Python数据分析 找出数组中每行(或每列)中指定的百分位数 numpy.percentile()

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析 找出数组中每行(或每列) 中指定的百分位数 numpy.percent ...

  4. 【python】二维数组按照某行或某列排序(numpy lexsort)

    这里介绍的排序方法主要是针对最后一行和最后一列,如果要指定某一行目前没有很好的方法,有个笨办法可以先把排序的该列(或行)换到最后,排序后再换回来 曾经以为排序只能使用list的sort函数,后来发现a ...

  5. Python 数据分析之Numpy

    Python 数据分析之Numpy Python有着大量功能强大的第三方库.这些第三方库可以大大地扩充Python的功能,我们在实际使用中往往也离不开这些第三方库. NumPy是Python的一种开源 ...

  6. Python数据分析训练营——Python数据分析之Numpy

    文章目录 Python数据分析之Numpy 1.Numpy的数组对象及其索引 数组上的数学操作 产生数组 数组属性 索引和切片 多维数组及其属性 多维数组索引 多维数组切片 切片是引用 花式索引 一维 ...

  7. Python数据分析 3.numpy数据科学库

    Python数据分析 3.numpy基础库 1.数组的创建 import numpy as npt1 = np.array([1,2,3,]) print(t1) print(type(t1))t2 ...

  8. Python学习笔记——Numpy数组的移动滑窗,使用as_strided实现

    Python学习笔记--Numpy数组的移动滑窗,使用as_strided实现 `Numpy`中移动滑窗的实现 为何需要移动滑窗 `Numpy`中的移动滑窗 移动滑窗的`as_strided`实现方法 ...

  9. Python数据分析之Numpy,Pandas,Matplotlib Pyplot

    文章目录 一.Python数据分析之Numpy 0.数组的引入 1.创建数组 2.数组的属性 3.数组的基本操作 3.1 索引 3.2 切片 3.3花式索引 3.4 "不完全"索引 ...

最新文章

  1. 移动端与PHP服务端接口通信流程设计(基础版)
  2. 用navicate 连接本地数据库提示用户名/口令无效
  3. Hadoop hdfs 从指定偏移量读取文件数据代码示例
  4. 转正答辩提问_电信专业学生党支部预备党员转正答辩
  5. Flink SQL 在网易云音乐的产品化实践
  6. Ajax — 第一天
  7. 遍历List过程中同时修改
  8. IOS之Foundation之探究学习Swift实用基础整理一
  9. 入门级控件 c# 1615014955
  10. 小米11系列最新曝光:国内首发骁龙875 还有独占期
  11. 王思聪连收3条限制消费令后,债主回应:对于他是小钱,对于我们可是巨款
  12. window safari 怎么进入响应式_Web前端新手怎么入门 如何用CSS做响应式布局
  13. IDEA快捷键大全及修改IDEA快捷键
  14. Unity官方手册翻译之旅---Unity User Manual (2017.1 beta)
  15. java调用百度语音接口
  16. CSS 固定定位 position fixed
  17. 如何一键批量上传图片到指定图床,并返回 Markdown 链接?
  18. centos 7 开启80,443端口
  19. TP5简单实现类似京东淘宝多级商品筛选功能。
  20. Linux报错-ssh_exchange_identi...

热门文章

  1. 压缩解压函数实现(转)
  2. c++ getpid函数_C Linux中的getpid()和getppid()函数
  3. Android Hidl开发
  4. 【Python画图】matplotlib画折线图plt.plot、柱状图plt.bar、堆叠柱状图、饼图plt.pie以及自定义坐标轴的位置、显示汉字
  5. 走进Airsim,教你如何做机器人与视觉的融合仿真
  6. 西门子S7200smartPLC与三菱FX3uPlc做485Modbus RTU通信
  7. 一季度中国两家手机品牌的全球出货量翻倍增长
  8. SpringBoot+Vue前后端分离的Java快速开发框架 工作流开发框架
  9. 程序猿身边有个漂亮女程序媛~~~那是种什么样的体验?
  10. Gridview图片正方形