1. 数组属性
nd.array数组是存储单一数据类型的多维数组
| 属性 | 描述 |
|---|---|
| ndim | 返回int。表示数组的维数 |
| shape | 返回元组 tuple。表示数组的尺寸,对于n行m列的矩阵,形状(n,m) |
| size | 返回int。表示数组的元素总数,等于数组形状的乘积。三行四列=12 |
| dtype | 返回data-type。描述数组中元素的类型 |
| itemsize | 返回 int。表示数组的每个元素的大小(以字节为单位) |
创建数组并查看属性
2. 数组创建
numpy.array(object, dtype=None, copy=True, order=‘K’,subok=False, ndmin=0)
| 参数 | 描述 |
|---|---|
| object | 接收array。表示想要创建的数组。必须给定,无默认。 |
| dtype | 接收data-type。表示数组所需的数据类型。如果未给定,则选择保存对象所需的最小类型。默认为None。设置了就优先以设置的为主。 |
| ndmin | 接收int。指定生成数组应该具有的最小维数。默认为None |
重新设置数组的shape,变为三行两列
使用 arange 函数创建数组
之前接触的range(10)是0-9的10个数字,arange也是类似
使用 linspace 函数创建数组
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)
从0开始到10结尾,num为总个数。加上endpoint=False,就不会取到10
jupyter notebook查看函数简单介绍的快捷键为 shift+tab
使用 logspace 函数创建等比数列
base参数为底数,base=2,以2为底
使用zeros函数创建全0的数组
使用eye函数创建对角线为1,其余为0的数组
使用diag函数创建对角线元素为指定数值的数组
使用ones函数创建元素全为1的数组,与zeros类似
3. 数组数据类型
NumPy部分基本数据类型与其取值范围(dtype)
在python当中只有整形和浮点型的区别,没有区分XX位浮点型/整形,在Numpy中可以,节省空间。
| 部分类型 | 描述 |
|---|---|
| bool | 用一位存储的布尔类型(值为TRUE或FALSE) |
| inti | 由所在平台决定其精度的整数(一般为int32或int64) |
| int8 | 整数,范围为−128至127 |
| int16 | 整数,范围为−32768至32767 |
| int32 | 整数,范围为(-2的31次方)至(2的32次方)-1 |
数组数据类型转换
一些简单的转换例子
在使用array函数创建数组时,数组的数据类型默认是浮点型(有加“.”的话一般会是浮点型)。自定义数组数据,则可以预先指定数据类型
NumPy 生成随机数 np.random
random模块常用随机数生成函数
| 函数 | 说明 |
|---|---|
| seed | 确定随机数生成器的种子。 |
| permutation | 返回一个序列的随机排列或返回一个随机排列的范围。 |
| shuffle | 对一个序列进行随机排序。 |
| binomial | 产生二项分布的随机数。 |
| normal | 产生正态(高斯)分布的随机数。 |
| beta | 产生beta分布的随机数。 |
| chisquare | 产生卡方分布的随机数。 |
| gamma | 产生gamma分布的随机数。 |
| uniform | 产生在[0,1]中均匀分布的随机数 |
无约束条件下生成随机数
np.random.random(size)
生成服从均匀分布的随机数
np.random.rand(d1,d2,…,dn)
生成服从正态分布的随机数
np.random.randn()
生成给定上下范围的随机数
np.random.randint()
列表的索引是切片,一、二维数组的索引和列表类似。
从左往右的起始索引为0,从右往左的起始索引为负数-1
前闭后开的区间 [ x,y,p )
省略 x 表示从第0个开始
省略 y 表示到最后一个
p为步长,例如 p=2,表示隔一个取一个
前后都省略表示所有的
一维数组的例子
多维数组的索引
使用整数和布尔值索引访问数据
布尔值的向量长度要和索引的长度一致
1. 合并数组
一维数组转换二维数组:reshape
使用ravel函数展平数组
使用flatten函数展平数组
纵向、横向合并数组
hstack函数实现数组横向组合:np.hstack((arr1,arr2))
vstack函数实现数组纵向组合:np.vstack((arr1,arr2))h表示水平横向,v表示垂直纵向
concatenate函数实现数组横向组合:np.concatenate((arr1,arr2),axis = 1))
concatenate函数实现数组纵向组合:np.concatenate((arr1,arr2),axis = 0))
仅需改变轴的数值即可
创建两个数组
合并数组
2. 切割数组
纵向切割、横向切割
使用hsplit函数实现数组横向分割:np.hsplit(arr1, 2)
使用vsplit函数实现数组纵向分割:np.vsplit(arr, 2)
使用split函数实现数组横向分割:np.split(arr, 2, axis=1)
使用split函数实现数组纵向分割:np.split(arr, 2, axis=0)



