- 数据的维度
数据的维度可划分为:一维数据、二维数据、多维数据、高维数据
一维数据:由对等关系的有序或无序数据构成,采用线性方式组织,像经常用到的数组和列表。
二维数据:由多个一维数据构成,是一维数据的组合形式。经典二维数据类型→表格
多维数据:由一维或二维数据在新维度上扩展形成。
eg:时间维度
![](https://img-blog.csdnimg.cn/img_convert/2af3ecf6d2c7e0bf43326f55f6f7142b.png)
高维数据:仅利用最基本的二元关系展示数据间的复杂程度,也就是由键值对组成的结构关系。
![](https://img-blog.csdnimg.cn/img_convert/0c28e4bf3705055babbdcbf7d886cf5c.png)
- NumPy的数组对象:ndarray
- 功能
一个强大的N维数组对象ndarray
广播功能函数
整合C/C++/Fortran代码的工具
线性代数、傅里叶变换、随机数生成等功能
- 引用
![](https://img-blog.csdnimg.cn/img_convert/1a751dab0cdbaf04551b655e638e3978.png)
建议:为使其他程序员共识,建议更改为 np ,而非其他别名
- adarrary:N维数组对象
(1)ndarray是一个多维数组对象,由两部分构成:实际的数据和描迹这些数据的元数据(数据维度、数据类型等)。
ndarray数组一般要求所有元素类型相同(同质),数组下标从0开始。
![](https://img-blog.csdnimg.cn/img_convert/b6a66d6cfb0246b5a4f56ce2ff75fd80.png)
数组对象可以去掉元素间运算所需的循环,使一维向量更像一个单个的数据。还可以设置专门的数组对象用来可以提高运算速度。
(2)ndarray对象的属性
![](https://img-blog.csdnimg.cn/img_convert/b0d6c04d81e5522dc50ed61f92afac15.png)
(3)ndarray的元素类型
整数类型
![](https://img-blog.csdnimg.cn/img_convert/65e5cd24b4e528bb6dc9751e99f2c448.png)
浮点类型
![](https://img-blog.csdnimg.cn/img_convert/a1736fa2c5c30fb8d2502f5f81fa9e54.png)
复数类型
![](https://img-blog.csdnimg.cn/img_convert/d292168ab047c46efa48158080d0f0ba.png)
ndarray可以由非同质对象构成
![](https://img-blog.csdnimg.cn/img_convert/ecc91d08e4053451ea1f21d5a818c363.png)
非同质的ndarray对象无法有效发挥Numpy优势,尽量避免使用(?)
- ndarrary数组的创建和变换
- 创建方法
从Python中的列表、元组等类型创建ndarray数组
![](https://img-blog.csdnimg.cn/img_convert/f2d2884d2c9f6ad791dd91cb18edeacb.png)
使用NumPy中函数创建ndarray数组,如:arange、ones等
![](https://img-blog.csdnimg.cn/img_convert/692132b8822588e244d296195907ff1e.png)
![](https://img-blog.csdnimg.cn/img_convert/209eeece74ca668dd976612f08de63b1.png)
![](https://img-blog.csdnimg.cn/img_convert/081cb2f8e44e8aa417b1fb94230b9df5.png)
使用Numpy中其他函数创建ndarray数组
![](https://img-blog.csdnimg.cn/img_convert/97db6eae433ed4c3eec97ebe05766ce9.png)
- ndarray数组维度变换的常用方法
![](https://img-blog.csdnimg.cn/img_convert/c173779d96dc8d0ee1e280af9e3ccdc2.png)
reshape不改变原数组,而是重新生成一个数组返回,resize则是直接改变原数组
![](https://img-blog.csdnimg.cn/img_convert/290d73a4b4a730621cc81de2c14d871d.png)
即使用astype定义一个与原数组相同数据类型的数组,也是生成一个新的数组,对原数组进行一个拷贝
![](https://img-blog.csdnimg.cn/img_convert/4f26f506c440d72fdb3ee59a2d4320b0.png)
![](https://img-blog.csdnimg.cn/img_convert/d7785b965028eb985286e63fb2b8f326.png)
4.ndarray数组的操作
索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程
一维数组的索引和切片:
![](https://img-blog.csdnimg.cn/img_convert/f601c3c717ca3c9ebe2ca5c611828abf.png)
多维数组的索引和切片:
![](https://img-blog.csdnimg.cn/img_convert/05773969d429352bc040afa718dab6b0.png)
(查阅相关资料,多加理解,个人认为不是很好理解,菜鸟教程由相关解释
NumPy 切片和索引 | 菜鸟教程 (runoob.com))
5.ndarray数组的运算
- 数组与标量的计算
数组与标量之间的运算,作用于数组中的每一个元素
![](https://img-blog.csdnimg.cn/img_convert/4504313ce5d267efd7611df92f9cbf48.png)
- Numpy一元函数
对ndarray中的数据执行元素级运算的函数
![](https://img-blog.csdnimg.cn/img_convert/049f517ca27505ab6e78892f33ee302c.png)
![](https://img-blog.csdnimg.cn/img_convert/c78a654f916811a84e2fdedc7ce48187.png)
eg:
![](https://img-blog.csdnimg.cn/img_convert/94ff0189399c7e28146e5e0dd6e7abb7.png)
- Numpy二元函数
![](https://img-blog.csdnimg.cn/img_convert/5834cf5bea0d406518972b018c810b18.png)
![](https://img-blog.csdnimg.cn/img_convert/3bf2127af61f4aed04ca8f76319f6c76.png)
问:用numpy创建一个二维或多维正态分布随机数,保留符合[0, 1)的数,然后求平均值。
答:
生成0~1的数组 :np.random.random
正态分布(一维):np.random.randn (n)
正态分布(二维):np.random.randn (2,n) 注意结果中括号数量
正态分布(多维):np.random.randn (x,y)
![](https://img-blog.csdnimg.cn/img_convert/e307afb59c2573337078d52cc09bce44.png)