youandme 2019-07-01
一、数据与numpy数组的创建
1、 python数组的创建
python中的固定类型数组:
python中提供了几种将数组存储在有效的、固定类型的数据缓存中的选项。内置的数组(array)模块可以创建按统一类型的密集数组:
这里的“i”表示的是一个数据类型码,表示数据为整型。
更实用的是ndarray数组对象,Python的数组对象提供了数组类型的有效存储,而Numpy为该数据加上了高效的操作。稍后将会介绍这些操作,这里先集中展示创建Numpy数组的方法:
2、 Numpy数组的创建
从python列表创建数组:
创建np数组时需要强调元素类型的一致。如果类型不同则会自动向上转换。
2.1dtype参数进行强制类型转换或类型指定
2.2生成嵌套数组
手动创建嵌套数组
使用公式嵌套数组
3、11中创建ndarray数组的高效创建方法
面对大型数组,用Numpy数组时,用Numpy内置方法从头创建数组时一种高效的方法,以下是几个示例:
3.1 创建一个元素都为0 的n * m 的多(2)维数组
np.zeros((维度,行数,列数),dtype = "指定类型(float32/int32/str)")
3.2 创建一个元素都为1的n*m的多(3)维数组
np.ones((维度,行数,列数),dtype = "指定类型(float32/int32/str)")
3.3创建一个的整数型数组,数组的值是一个线性序列。
np.arange(start[真包含], end[假包含], step)
3.4创建一个50个元素的数组,这50个数均匀地分配到1~10
np.linspace(start, stop, 平均分成的分数)
3.5 创建一个在0-1之间随机分布的由随机数组成的数组
np.random.random((维度,行数, 列数))
其他生成随机数的方法
np.random.randn(维度,行数,列数)
np.random.rand(维度,行数,列数)
3.6 创建一个正态分布的随机数数组
np.random.normal(均值, 方差, (维度,行数, 列数))
3.7创建一个服从设置区间的随机数整数型的数组
np.random.randint(start, stop, (维度,行数, 列数))
3.8 创建一个对角线元素都为1,其他位置元素都为0的单位矩阵
np.eye(行数,列数,dype=’元素类型(默认为浮点型)’)
3.9创建一个由m*n维未初始化的数组,数组的值是内存空间中的任意值
np.empty(n)
3.10 创建一个指定元素的对角矩阵
Np.diag(n)
3.11创建一个指定行列,和指定内容的数组
Np.full((维度,行数,列数),指定值(可以是一个数组,也可以是一个列表或嵌套列表))
二、数组的基本操作
1、查看Nddaray属性
数组的属性:
现在我们定义三个数组, 一维数组, 二维数组, 三维数组,为了确保大家都能生成一样的数组, 我们先设置随机数种子。
Np.random.seed可以使生成随机数时可以生成一样的随机数
1.1查看数组的形状
1.2查看数组的维度
1.3 查看数组的总大小
1.4查看数组的数据类型
1.5查看数组中每个元素的大小(所占用内存的大小)
1.6查看数组的总大小(占用内存的大小)
1.7对数组进行转置
1.8其他查看属性的方法
Ndarray.flags
有关数组的内存布局的信息。
Ndarray.shape
数组维数组。
Ndarray.ndim
数组维数,在Python世界中,维度的数量被称为rank。
Ndarray.data
Python缓冲区对象指向数组的数据的开始。
Ndarray.size
数组中的元素总个数。
Ndarray.itemsize
一个数组元素的长度(以字节为单位)。
Ndarray.dtype
数组元素的数据类型。
Ndarray.T
数组的转置。
2.Numpy数据类型以及类型转换
Numpy中的数组比 Python 原生中的数组(只支持整数类型与浮点类型)强大的一点就是它支持更多的数据类型。
2.1 numpy基本数据类型
Numpy常见的基本数据类型如下:
数据类型
描述
bool_
布尔(True或False),存储为一个字节
int_
默认整数类型(与C long相同;通常为int64或int32)
intc
与C int(通常为int32或int64)相同
intp
用于索引的整数(与C ssize_t相同;通常为int32或int64)
int8
字节(-128到127)
int16
整数(-32768到32767)
int32
整数(-2147483648至2147483647)
int64
整数(-9223372036854775808至9223372036854775807)
uint8
无符号整数(0到255)
uint16
无符号整数(0到65535)
uint32
无符号整数(0至4294967295)
uint64
无符号整数(0至18446744073709551615)
float_
float64的简写。
float16
半精度浮点:符号位,5位指数,10位尾数
float32
单精度浮点:符号位,8位指数,23位尾数
float64
双精度浮点:符号位,11位指数,52位尾数
complex_
complex128的简写。
complex64
复数,由两个32位浮点(实数和虚数分量)
complex128
复数,由两个64位浮点(实数和虚数分量)
虽然有这么多的数据类型,但是我们平时用的时候仅需要知道(int,bool,float,complex,str)这几种就可以了,暂时不需要去记这么多。
这些类型都可以在创建ndarray的时候通过dtype来制定
2.2数据类型的转换
数组直接数据类型的转换首选是.astype()方法,或者使用类型本身作为函数。
什么是数组数组是一种线性表数据结构,它用一组连续的内存空间来存储一组具有相同类型的数据。典型的线性表有数组、链表、队列和栈。直接将第 k 位的数据搬移到数组元素最后,然后把新的元素直接放在第 k 位。