- 1 Numpy简介
- 2 Numpy的基础使用
- 2.1 导入numpy
- 2.2 创建数组
- 2.2.1 利用array创建多维数组
- 2.2.2 利用函数创建
- 3 Numpy-数据类型
- 4 Numpy方法
1 Numpy简介
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的科学计算库,它提供了矩阵运算的功能,一般与Scipy、matplotlib一起使用。
2 Numpy的基础使用
2.1 导入numpy
import numpy as np
2.2 创建数组
以jupyter notebook进行操作演示
2.2.1 利用array创建多维数组
#创建一维数组
arr= np.array([6,3,4,6,2,6])
arr
#创建二维数组
d2 = np.array([[1,23,51,5,36],
[12,15,21,3,1]])
d2.shape
2.2.2 利用函数创建
#创建全为0的数组
zeros = np.zeros((4,5))
zeros
#创建全为1的数组
ones = np.ones((3,3))
ones
#创建全为6的数组
allSix = np.full((6,6),6)
allSix
#创建对角线上的值全为1的对角矩阵
eye = np.eye(4)
eye
#平移对角矩阵的对角线(右移)
eye = np.eye(6,k=2)
eye
#平移对角矩阵的对角线(左移)
eye = np.eye(6,k=-2)
eye
#用随机函数创建数组(0到1之间)
randomArr = np.random.random((4,5))
randomArr
#用随机函数创建数组(100之间取10个整数)
randomArr = np.random.randint(100,size=10)
randomArr
3 Numpy-数据类型
numpy ndarray数据类型可以通过参数dtype 设定,而且可以使用astype转换类型,在处理文件时候这个会很实用,astype 调用会返回一个新的数组,也就是原始数据的一份拷贝。
- np.bool 布尔值
- np.int 整型
- np.float 浮点型
- np.complex 复数
- np.object 对象
- np.string_ ASCII字符
- np.unicode_ Unicode所有字符, 字节数平台决定
#指定numpy的ndarry数组数据类型的方法
#法一
a = np.array([1,2,3,45,5],dtype=np.int64)
a.dtype
#法二
b = np.array([1,2,3,45,5],dtype="i8")
b.dtype
#Numpy只能保存单一数据类型
com = np.array([2,"sdvsd",5.4])
com.dtype
#利用Numpy的np.dtype()函数创建自定义数据类型
t = np.dtype([("name",np.str_,40),("num",np.int32),("price",np.float32)])
t.names
#利用自定义数据类型创建数组
products = np.array([('dvd',42,3.14),('butter',16,2.89)],dtype=t)
products
#转换类型
a = np.array(['1.23', '2.34', '3.45'],
dtype='|S4')
b = a.astype(float)
4 Numpy方法
numpy方法 | 解释 |
np.dtype | 对象的元素类型 |
np.itemsize | 对象中每个元素的大小, 单位字节 |
np.size | 对象元素的个数, 相当于np.shape中的n*m值 |
np.shape | 轴, 查看数组形状, 对于矩阵, n行m列 |
np.ndim | 秩 |
np.array(数组, dtype=np.bool) | 自定义数组类型 |
np.astype(np.bool) | 转换数组类型 |
np.mat() | 将python 列表转化成矩阵 |
np.mat().getA() | 将matrix对象转成ndarray对象 |
np.matrix() | 同上 |
np.asmatrix() | 将ndarray对象转成matrix对象 |
np.tile() | 重复某个数组。比如tile(A,n),功能是将数组A重复n次,构成一个新的数组传送门 |
np.I | 矩阵求逆 |
np.T | 矩阵转置, 行变列, 列变行, 对角线翻转矩阵 |
np.tolist() | 转换成python列表, 用于和python原生结合写程序 |
np.multiply(x, y) | 矩阵x 矩阵y相乘 |
np.unique() | 数组去重, 并且从小到大生成一个新的数组 |
np.arange | 同python range() |
np.arange(24).reshape((2, 3, 4)) | 创建一个2维3行4列的数组, 必须能被给定的长度除开, 可以索引和切片 |
np.arange(24).resize((2, 3, 4)) | 同上, 会修改原值 |
np.linspace(x, y, z) | 等间距生成, x起始, y截止, z步长 |
np.ones(x) | 生成都是x的数组, 可传递三维数组, 几行几列, 具体的个数 |
np.zeros(x) | 生成都是0的数组 |
np.full([x, y], z) | 自定义模板数组, 生成x行y列都是z的数组 |
np.eye(x) | 创建一个正方的x*x单位的矩阵, 对角线为1, 其余为0 |
np.flatten() | 数组降维, 不改变 原值 |
np.random.rand(x, y, z) | 生成一个一维x随机数或生成x*y的随机数组 |
np.random.randn(x, y) | 正态分布随机数 |
np.random.randint(low, high, (shape)) | 整数随机数 |
np.random.normal(loc, scale, (size)) | 从指定正态分布中抽取样本, loc为概率分布的均匀值, 标准差scale |
np.random.seed(s) | 给一个随机数字固定 |
np.randomunifrom(low, high, (size)) | 均匀分布的数组, 有小数 |
np.random.shuffle(a) | 将数组a的第0轴(最外维度)进行随机排列(洗牌), 改变数组a, 行边列不变 |
np.random.permutation(a) | 同上, 不改变数组a |
np.random.choice(a, size=None, replace=False, p=数组a/np.sum(b)) | 从一维数组a中以概率p抽取元素,形成size形状新数组,replace表示是否可以重用元素,默认为False,p为抽取概率,本位置越高,抽取概率越高 |
np.sum(axis=None) | 求和, axis=0为列, 1为行 |
np.argsort() | 矩阵每个元素坐标排序 |
np.sort(axix=None) | 从小打大排序 |
-np.sort(axis=None) | 从大到小排序 |
np.sort_values(‘字段’, ascending=False) | 排序,升序排列 |
np.mean(axis=None) | 平均数 |
np.average(axis=None,weights=None) | 加权平均,weights加权值,不设为等权重,例子[10, 5, 1],每列分别X10,X5,X1在/(10+5+1) |
np.var(axis=None) | 方差:各数与平均数之差的平方的平均数 |
np.std(axis=None) | 标准差:方差平方根 |
np.min(axis=None) | 最小值 |
np.argmin(axis=None) | 求数组中最小值的坐标 |
np.median(axis=None) | 中位数 |
np.ptp(axis=None) | 元素最大值与最小值的差 |
np.cumsum() | 累加,cumsum和cumprod之类的方法不聚合,产生一个中间结果组成的数组,默认一维数组,1为按原样 |
np.cumprod() | 累乘 |
np.count_nonzero(arr > 0) | 计数非0值个数,布尔值会被强制转换为1和0,可以使用sum()对布尔型数组中的True值计数 |
np.bools.any() | 测试数组中是否存在一个或多个True |
np.bools.all() | 数组中所有值是否都是True, 测试有没有空值 |
np.bools.all() | 数组中所有值是否都是True, 测试有没有空值 |
np.bools.all() | 数组中所有值是否都是True, 测试有没有空值 |