基础函数
NumPy
1.1 简介
"""
NumPy -- Numerical Python
是一个运行速度非常快的数学库, 主要用于数组计算
提供了更加精确的数据类型,使其具备了构造复杂数据类型的能力
主要功能:
1. 高性能科学计算和数据分析的基础包
2. ndarray 多维数组, 具有矢量运算能力 快速 节省空间
3. 矩阵运算 无序循环 可完成类似Matlab中矢量运算
4. 用于读写磁盘数据的工具 以及 用于操作内存映射文件的工具
"""
1.2 属性
"""
属性:
ndarray.ndim -- 数组的轴个数
ndarray.shape -- 数组的维度
ndarray.size -- 数组的元素个数
ndarray.dtype -- 数组的元素的数据类型
ndarray.itemsize -- 数组的元素占用字节数
"""
import numpy as np
# 创建数组
# arange(15) 等价于python的 range(15), 即: 获取 0 ~ 14的整数
# reshape(3, 5) 把上述数据封装到 3个一维数组中, 每个一维数组的长度为: 5, 然后把三个一维数组封装成1个 二维数组
arr = np.arange(15).reshape(3,5)
# 控制台输出
print(f'数组中的元素信息: {arr}')
# 属性
print(f'数组的轴个数: {arr.ndim}')
print(f'数组的维度: {arr.shape}')
print(f'数组的元素个数: {arr.size}')
print(f'数组的元素的数据类型: {arr.dtype}')
print(f'数组的元素占用字节数: {arr.itemsize}')
1.3 创建多维数组
"""
ndarray:
是一个多维的数组对象(矩阵)
具有矢量算数运算能力和复杂的广播能力,并且 执行速度快 节省空间
下标从 0 开始, 数组中的元素必须是相同类型
"""
arr = np.array([2, 3, 4])
print('数组arr元素类型: ', arr)
print('数组arr类型:', arr.dtype)
"""
zeros() -- 创建一个全是 0 的数组
ones() -- 创建一个全是 1 的数组
empty() -- 创建一个内容 随机 的数组, 默认创建的数组类型是float64
arange() -- 创建一个 一维数组
matrix() -- 创建一个 二维数组, 只能生成2维数组
random.rand() -- 生成随机多维浮点型数据, 固定区间 0.0 ~ 1.0
random.randint() -- 生成随机多维整形数据, 可指定区间(1, 5)
random.uniform() -- 生成随机多维浮点型数据, 可指定区间(1, 5)
astypre() -- 转换数组中数据的数据类型
logspace() -- 等比数列
linspace() -- 等差数列
"""
# 3个一维数组, 每个长度为: 4
zero_arr = np.zeros((3, 4))
print('数组 zero_arr: ')
print(zero_arr)
# 创建一个三维数组 其中 有2个二维数组, 每个二维数组有3个一维数组, 每个一维数组有4个元素1, 整体放入1个数组中
one_arr = np.ones((2, 3, 4))
print('数组 one_arr: ')
print(one_arr)
# 创建一个随机数组
empty_array = np.empty((2, 3))
print('数组 empty_array: ')
print(empty_array)
# 起始, 结束, 步长, 类型
np_arange = np.arange(10, 20, 5,dtype=int)
print(f"arange创建np_arange: {np_arange}")
# 1 2;3 4 1,2;3,4 元素间空格分开 逗号分开 均可
mt = np.matrix("1 2;3 4")
print(f"matrix创建mt: {mt}")
# 生成指定维度大小(3行4列)的随机多维浮点型数据(二维), rand固定区间0.0 ~ 1.0
arr = np.random.rand(3, 4)
print(arr)
# 生成指定维度大小(3行4列)的随机多维整型数据(二维), randint()可指定区间(-1, 5)
arr = np.random.randint(-1, 5, size=(3, 4))
print(arr)
#生成指定维度大小(3行4列)的随机多维浮点型数据(二维), uniform()可以指定区间(-1, 5)产生-1到5之间均匀分布的样本值
arr = np.random.uniform(-1, 5, size=(3, 4))
print(arr)
# 细节
# 1. dtype参数 指定数组的数据类型 类型名+位数 如float64, int64
# 2. astype方法 转换数组的数据类型
# 初始化3行4列数组 数据类型为f1oat64
zeros_float_arr =np.zeros((3,4),dtype=np.float64)
print(zeros_float_arr)
print(zeros_float_arr.dtype) # float64
# astype转换数据类型 将已有的数组的数据类型转换为int64
zeros_int_arr = zeros_float_arr.astype(np.int64)
print(zeros_int_arr)
print(zeros_int_arr.dtype) #int64
# np.logspace 等比数列, logspace中, (开始点, 结束点, 数值的幂)
# 开始点为0, 结束点为0, 元素个数为10
arr = np.logspace(0,0,10)
print(arr)
# 假如 我们想要改变基数 不让它以10为底数 我们可以改变base参数 将其设置为2
arr = np.logspace(0,5,6, base=2)
print(arr)
1.4 基本函数
"""
基本函数
ceil() -- 向上最接近的整数 参数是 number 或 array
floor() -- 向下最接近的整数 参数是 number 或 array
rint() -- 四舍五入 参数是 number 或 array
isnan() -- 判断元素是否为 NaN(Not a Number) 参数是 number 或 array
multiply() -- 元素相乘 参数是 number 或 array
divide() -- 元素相除 参数是 number 或 array
abs() -- 元素的绝对值 参数是 number 或 array
where(condition, x, y) -- 三元运算符 x if condition else y
"""
"""
统计函数
mean(), sum() --所有元素的平均值 所有元素的和 参数是 number 或 array
max(), min() --所有元素的最大值 所有元素的最小值 参数是 number 或 array
std(), var() --所有元素的标准差 所有元素的方差 参数是 number 或 array
argmax(), argmin() --最大值的下标索引值 最小值的下标索引值 参数是 number 或 array
cumsum(), cumprod() --返回一个一维数组 每个元素都是之前所有元素的 累加和 和 累乘积 参数是 number 或 array
"""
# 多维数组默认统计全部维度, axis参数可以按指定轴心统计, 值为0则按列统计, 值为1则按行统计
arr = np.arange(12).reshape(3, 4)
print(f'数组中元素: {arr}')
print(f'数组的按列统计和: {np.sum(arr, axis = 0)}') #数组的按列统计和
print(f'数组的按行统计和: {np.sum(arr, axis = 1)}') #数组的按行统计和
"""
假如我们想要知道矩阵a和矩阵b中所有对应元素是否相等 我们需要使用all方法
假如我们想要知道矩阵a和矩阵b中对应元素是否有一个相等 我们需要使用any方法。
any(): 至少有一个元素满足指定条件 返回True
all(): 所有的元素满足指定条件 返回True
unique(): 找到唯一值并返回排序结果 类似于Python的set集合
sort(): 排序函数
"""
# any all
arr = np.random.randn(2, 3)
print(arr)
print(np.any(arr > 0))
print(np.all(arr > 0))
# 数组排序
arr = np.array([1, 2, 34, 5])
print("原数组arr:", arr)
# np.sort()函数排序, 返回排序后的新数组
sort_arr = np.sort(arr)
print("numpy.sort()函数排序后的数组:", sort_arr)
# ndarray直接调用sort, 在原数据上进行修改
arr.sort()
print("数组.sort()方法排序:", arr)
1.5 基本运算
"""
基本运算:
两个ndarray, 一个是arr_a 另一个是arr_b
它们俩之间进行 arr_a + arr_b 或 arr_a - arr_b 或 arr_a * arr_b 这样计算的前提是 shape相同
计算的时候, 位置对应的元素 进行 加减乘除的计算, 计算之后得到的结果的shape 跟arr_a /arr_b 一样
"""
a = np.array([20, 30, 40, 50])
b = np.arange(4)
c = a - b
print("数组a:", a)
print("数组b:", b)
print("数组运算a-b:", c)
print('*' * 30)
"""
矩阵运算
前提:
arr_a 列数 != arr_b 列数
arr_a 列数 = arr_b 行数
函数:
arr_a.dot(arr_b)
"""
x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[6, 23], [-1, 7], [8, 9]])
print("数组x:", x)
print("数组y:", y)
print("数组运算x.dot(y):", x.dot(y))
print("数组运算dot(x, y):", np.dot(x, y))
标签:arr,函数,--,基础,np,数组,print,array,Numpy
From: https://blog.csdn.net/h15366059/article/details/140565788