numpy数组
- ndarray创建
- 1)创建ndarray数组—array方法
- 2)创建数组方法总结
- ndarray数据类型
- 1)astype方法
- 2)astype方法传参形式
Numpy的全名是numerical Python,是高性能的科学计算和数据分析基础包,是很多高级工具的构建基础。
numpy模块的基本功能能够总结为 :
1.ndarray,具有向量计算和复杂广播能力的多维数组;快速而且节省空间。
2.对数组数据进行快速运算,有专门的内置函数,无需编写循环。
3.读写磁盘数据,操作映射文件。
4.线性代数、随机数生成和傅里叶变换等重要功能。
5.能够集成C、C++、Fortan等语言编写的代码。
ndarray创建
numpy最重要的特点就是N维数组对象,该对象是快速灵活的大数据容器。ndarray中要求所有元素必须是同一种数据类型。且每个数组都有一个shape(表示维度)和一个dtype(说明数据类型)。
1)创建ndarray数组—array方法
创建数组使用array()方法,传入的参数可以是任意一种序列对象,
import numpy as np
data = [6, 7.5, 8, 0, 1]
arr1 = np.array(data) # 得到:array([6, 7.5, 8, 0, 1])
嵌套序列会被转为一个多维数组,
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr2 = np.array(data2)
#得到的是 array([[1,2,3,4],
# [5,6,7,8]]) 二维数组
数组对象相关的属性有,
属性 | 说明 | 举例 |
dtype | 返回数据类型 | arr1.dtype 返回 ‘float64’ |
ndim | 返回维度 | arr1.ndim 返回 1,即一维 |
shape | 返回各个维度的大小 | arr2.shape 返回 (2,4) |
除了 array方法外,zeros和ones方法可以创建指定长度或者形状的全0或全1数组。empty方法可以创建一个没有任何具体值的数组,用这些方法创建一维数组传入一个整数,多维数组时,传入的是元组。
生成一维的长度为10的数组,
生成二维数组,行列分别是3和6,
三维数组,
其中,empty方法返回的并不是全部为0的数组,因为存在安全问题,多数情况下返回的是垃圾值。
在Python中 range方法返回的是一个迭代器对象,numpy模块中 arange方法与之相似,返回的是一个array数组(该数组是一维数组)。
2)创建数组方法总结
a = [1, 2]
np.asarray(a) # 返回 array([1, 2])
a = np.array([1, 2]) # 此时a已经是一个numpy的数组
np.asarray(a) is a # 返回True
a = np.array([1, 2], dtype=np.float32)
np.asarray(a, dtype=np.float32) is a # 返回 True
np.asarray(a, dtype=np.float64) is a # 改变了dtype属性,False
np.arange(-1*np.pi, np.pi, np.pi/100) #创建一个范围是[-π,π]每个元素之间差值为 π/100的数组
np.eye(2, dtype=int)
#返回 array([[1, 0],
# [0, 1]])
np.eye(3, k=1) #参数k值可以调节的
#返回 array([[ 0., 1., 0.],
# [ 0., 0., 1.],
# [ 0., 0., 0.]])
np.identity(3)
#返回 array([[ 1., 0., 0.],
# [ 0., 1., 0.],
# [ 0., 0., 1.]])
eye方法中,k参数为1的对角线的位置偏离度,0居中,1向上偏离1,2偏离2,以此类推,-1向下偏离。值绝对值过大就偏离出去了,整个矩阵就全是0了。
区分:
eye方法和identity方法都是生成单位矩阵的方法,第一个参数n传入的都是维度,不同的是:
1.identity方法只能创建方阵;而eye方法能够创建矩阵,因为官方文档中这两个方法参数的说明为,
2.eye方法的对角线可以设置偏离度;而identity方法偏离度为0(即一般的对角线)。
ndarray数据类型
ndarray的数据可以使用 dtype参数进行设置,dtype的命名方式:类型名+各元素的位长。标准的浮点类型(编译语言的double)和Python的float占用8字节(64位)长度,在numpy中就记为“float64“。
1)astype方法
类型之间使用 astype方法进行转换,
如果是数值型字符串,也是可以使用 astype方法转换为字符串类型的,
即使使用astype方法时候没写成 np.float32而是写成了Python中的浮点数类型 float,也不会报错,numpy会进行自动转换。但是如果转换失败,比如将字母构成的字符串转换为float类,此时会报出 TypeError异常。
2)astype方法传参形式
- 使用1)中的方式传递参数
- 另一个array的dtype**,
- 简写的类型代码