python第三方库之numpy基础

前言

numpy是python的科学计算模块,底层实现用c代码,运算效率很高。numpy的核心是矩阵narray运算。

narray介绍

  • 矩阵拥有的属性

ndim属性:维度个数
shape属性:维度大小
dtype属性:数据类型

常用矩阵创建方法

import numpy as np
# 由列表转化
np.array([[1,2],[3,4]])
# 创建多维随机浮点数矩阵,区间0.0 ~ 1.0
arr = np.random.rand(3, 4)
# 创建多维整数矩阵,指定随机区间
arr = np.random.randint(-1, 5, size = (3, 4))
# 创建多维随机浮点数矩阵,指定区间
np.random.uniform(-1, 5, size = (3, 4))
# 创建全是0的矩阵
np.zeros((3,4))
# 仿照一个矩阵的形状和类型创建0矩阵
np.zeros_like([3,4])
# 创建1的矩阵
np.ones((3,4))
#仿照一个矩阵的形状和类型创建1矩阵
np.ones_like((3,4))
# 创建随机值
np.empty((3,4))
# 对原来矩阵打乱顺序
np.random.shuffle(arr)

常用基础运算方法

如果python代码中有很多涉及数学运算的操作,使用numpy是一种很好的提高运算效率的方法。

import numpy as np

np.sum()           # 计算矩阵元素的和
np.mean()          # 计算平均值
np.e               # 自然数e
np.pi              # 自然数π
np.abs()           # 计算绝对值,可以是数组
np.std(li)         # 计算标准差
np.var()           # 计算方差
np.max()           # 计算最大值
np.min()           # 计算最小值
np.cov(a,b)        # 计算协方差,得到矩阵,去[0,1]或[1,0]位置的为协方差
np.alen(a)         # 计算矩阵的长度,多维矩阵计算第一列的长度,即列数
np.argmax()        # 返回最大索引下标值
np.argmin()        # 返回最小索引下标值
np.ceil():         # 向上最接近的整数,参数是 number 或 array
np.floor():        # 向下最接近的整数,参数是 number 或 array
np.rint():         # 四舍五入,参数是 number 或 array
np.isnan():        # 判断元素是否为 NaN(Not a Number),参数是 number 或 array,返回布尔矩阵
np.multiply(arr1, arr2):  # 对应元素相乘,参数是 number 或 array
np.divide(arr1, arr2):  # 元素相除,参数是 number 或 array
np.where(condition, x, y): # 三元运算符,x if condition else y
np.any():          # 至少有一个元素满足指定条件,返回True
np.all()           # 所有的元素满足指定条件,返回True

np.unique()        # 去除重复值并返回上升的排序结果

v = np.who({'aaa':arr1}) # 打印arr的相关属性

矢量的加减乘

arr1 = np.random.randint(0,10,size=(3,4))
print(arr1*arr1) # 相对应元素相乘
print(arr1+arr1) # 对应元素相加
print(arr1-arr1) # 对应元素相减

布尔判断

arr1 = np.random.randint(0,10,size=(2,3))
print(arr1 < 5)

[[False False False]
 [False  True False]]

矩阵转换

# 多维使用数字表示维数,0,1,2,3代表四维
arr = np.random.rand(2,3)    # 2x3 数组
print(arr.transpose()) # 转换为 3x2 数组,默认规则行列交换
arr.transpose((3,2,1,0)) # 行和列交换
arr1 = arr.T # 行列交换

# 从原来矩阵按规则产生新矩阵
np.take()
>>> a = [4, 3, 5, 7, 6, 8]
>>> indices = [0, 1, 4]
>>> np.take(a, indices)
array([4, 3, 6])
>>> np.take(a, [[0, 1], [2, 3]])
    array([[4, 3],
           [5, 7]])

# 在不改变数据的情况下改变矩阵形状
np.reshape()
>>> np.reshape(a, (2, 3))
    array([[0, 1, 2],
           [3, 4, 5]])

# 数据复制
np.repeat()
>>> np.repeat(3, 4)
    array([3, 3, 3, 3])

读取数据文件

从txt文件中加载矩阵数据。

data_array = np.loadtxt(filename,  # 文件名
                        delimiter=',',  # 分隔符
                        dtype=int,  # 数据类型,指的是生成的矩阵的数据类型
                        usecols=(0,1))  # 指定读取的列号

参考

原文地址:https://www.cnblogs.com/cwp-bg/p/9493583.html