1、数据的纬度

维度:一组数据的组织形式

1.1 一维数据

一维数据由对等关系的有序或无序数据构成,采用线性方式组织 ,对应列表、数组和集合等概念

列表:数据类型可以不同 ,如 3.1413, 'pi', 3.1404, [3.1401, 3.1349], '3.1376'

数组:数据类型相同 。如:3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376

1.2 二维数据

二维数据由多个一维数据构成,是一维数据的组合形式。表格是典型的二维数据其中,表头是二维数据的一部分 。

1.3 多维数据

多维数据由一维或二维数据在新维度上扩展形成

1.4 高维数据

高维数据仅利用最基本的二元关系展示数据间的复杂结构

2、NumPy的数组对象:ndarray

NumPy是一个开源的Python科学计算基础库,包含:

• 一个强大的N维数组对象 ndarray

• 广播功能函数

• 整合C/C++/Fortran代码的工具

• 线性代数、傅里叶变换、随机数生成等功能

NumPy是SciPy、 Pandas等数据处理或科学计算库的基础

2.1 NumPy的引用

2.2 N维数组对象:ndarray

例:计算 A2+B3,其中,A和B是一维数组 。

def pysum():
a=[0,1,2,3,4]
b=[9,8,7,6,5]
c=[]
for i in range(len(a)):
c.append(a[i]**2+b[i]**3) return c
print(pysum())

利用python 已有的列表类型和循环的方法可以求出结果,但是程序繁琐。

>>> print (npsum())
None
>>> import numpy as np
>>> def npsum():
a=np.array([0,1,2,3,4])
b=np.array([9,8,7,6,5])
c=a**2+b**3
return c
>>> print(npsum())
[729 513 347 225 141]

利用numpy方式编程,可以看出,并没有使用循环,更简洁。

2.2.1  

• 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据

• 设置专门的数组对象,经过优化,可以提升这类应用的运算速度

观察:科学计算中,一个维度所有数据的类型往往相同

• 数组对象采用相同的数据类型,有助于节省运算和存储空间

ndarray是一个多维数组对象,由两部分构成:

• 实际的数据

• 描述这些数据的元数据(数据维度、数据类型等)ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始

2.2.2

np.array()输出成[]形式,元素由空格分割 。

8位(0或者1)组成一个字节。

2.3

2.3.1ndarray数组的元素类型

对比:Python语法仅支持整数、浮点数和复数3种类型

• 科学计算涉及数据较多,对存储和性能都有较高要求

• 对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能

• 对元素类型精细定义,有助于程序员对程序规模有合理评估

2.3.2

非同质的ndarray

非同质ndarray对象无法有效发挥NumPy优势,尽量避免使用

2.4 ndarray数组的创建

创建方法

• 从Python中的列表、元组等类型创建ndarray数组

• 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等

• 从字节流(raw bytes)中创建ndarray数组

• 从文件中读取特定格式,创建ndarray数组

2.4.1 从Python中的列表、元组等类型创建ndarray数组

x = np.array(list/tuple)

x = np.array(list/tuple, dtype=np.float32)

2.4.2  使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等

2.5 ndarray数组的变换

2.5.1 纬度的变换

a并没有发生变化

a发生改变

输出一维,但是a并没有发生变化

2.5.2 ndarray数组的类型变换

new_a = a.astype(new_type)

2.5.3 ndarray数组向列表的转换

ls = a.tolist()

2.6 ndarray数组的操作

数组的索引和切片

索引:找到特定位置的数据

切片:找到特定位置的一组数据

一维数组的索引和切片:与Python的列表类似

多维数组的索引:

多维数组的切片:

2.7 ndarray数组的运算

2.7.1 数组与标量之间的运算

2.7.2 NumPy一元函数

2.7.3NumPy二元函数

最新文章

  1. YYStock开源----iOS股票K线绘制第二版
  2. svn检出的时候报 Unable to connect to a repository at URL错误(摘自CSDN)
  3. NOIP2001 一元三次方程求解[导数+牛顿迭代法]
  4. OC语言中BOOL 和 bool 区别
  5. 键盘键与虚拟键码对照表+delphi虚拟键码对应关键
  6. 基础调试命令 - .dump/.dumpcap/.writemem/!runaway
  7. rabbitmq使用
  8. tp_link路由器 重新设置
  9. 【转】What is an entity system framework for game development?
  10. C++实现日期类(Date类)
  11. 各种浏览器兼容篡位的css样式写法
  12. php字符串递增
  13. 用div画三角/矩形/圆
  14. Linux深入理解Socket异常
  15. 苹果手机显示分享链接的方法html页面
  16. Wampserver配置与本地建站
  17. 如何在编辑器里添加CSS或JS代码
  18. yersinia的DHCP池耗尽断网攻击
  19. HTTP2.0探究
  20. Leetcode题库——33.搜索旋转排序数组

热门文章

  1. Error : Failed to get convolution algorithm. This is probably because cuDNN failed to initialize
  2. 简单服务器端Blazor Cookie身份验证的演示
  3. socket TCP 从0实现音频传输 ALSA 播放
  4. 安卓 打飞机 app 开发 第一篇
  5. PageRank 算法初步了解
  6. 原生ajax动态添加数据
  7. Asp.Net Core 中IdentityServer4 授权原理及刷新Token的应用
  8. HBU-数据库第五周作业
  9. 常用的API和基础算法
  10. 将SublimeText加入右键菜单