import numpy as np
arr2 = np.array([[1, 2, 3], [4, 5, 6]]) # 创建2行3列数组
print(f"形状:{arr2.shape}") # (2, 3)
print(f"形状:{np.shape(arr2)}") # (2, 3)
arr = np.arange(15).reshape(3,5) # 创建3行5列数组
# arange():类似range(),生成序列(如0-14共15个数)
# reshape():重组数据维度,如将15个元素重组为3×5矩阵
print(f"形状:{arr.shape}") # (3,5)
print(f"维度:{arr.ndim}") # 2 xy 轴 2维
print(f"元素总数:{arr.size}") # 15 所有元素的个数
print(f"元素类型:{arr.dtype}") # int64
print(f"元素字节大小:{arr.itemsize}") # 8
print(f"数组类型:{type(arr)}") # ndarray
arr3 =np.zeros((2,6)) # np.zeros(shape) # 其中shape参数必须用元组形式指定数组维度
np.ones(shape)
np.empty(shape)
arr4 = np.arange(1,16,1,dtype=np.int64) # 从1到16(不包含16),步长为1, 数据类型为int64
arr5 = np.matrix('1 2;3 4') #
# 二维数组 两种等效写法:np.mat()或np.matrix()
# rand()、randint()、uniform()生成ndarray对象
np.random.rand(3, 2) # 生成3行2列的随机浮点数数组 生成固定区间的随机多维浮点型数据
np.random.randint(1, 10, size=(3, 2)) # 生成3行2列的随机整数数组,范围为[1, 10)
np.random.uniform(1, 10, (3, 2)) # 生成3行2列的随机浮点数数组,范围为[1, 10)
np.random.randn(3, 2) # 生成3行2列的标准正态分布随机浮点数数组
arr12 = arr5.astype(np.float32)
arr13 = arr5.astype(np.string_)
# logspace生成的是等比数列,相邻元素比值相等
# linspace生成的是等差数列,相邻元素差值相等
# 参数差异:
# logspace参数表示幂次范围
# linspace参数直接表示数值范围
# logspace(base=底数):对数刻度序列
# linspace(endpoint=True|False):线性序列(控制是否包含终点)
np.logspace(0, 2, 5) # [ 1. 10. 100. 1000. 10000.]
# np.logspace(起始值, 结束值, 元素个数, endpoint=布尔值)
# 参数说明:
# endpoint参数:默认为True表示包含结束值,False则不包含
np.linspace(0, 100, 5) # [ 0. 25. 50. 75. 100.]
# np.ceil(): 向上取整函数,返回比输入值大的最小整数。例如:1.3取整为2,-1.3取整为-1(比-1.3大的最小整数)。
# np.floor(): 向下取整函数,返回比输入值小的最大整数。例如:1.3取整为1,-1.3取整为-2(比-1.3小的最大整数)。
# np.rint(): 四舍五入函数,遵循标准的四舍五入规则。
# np.isnan(): 判断元素是否为NaN(非数字值),对字符串等非数字类型返回True。
# np.abs(): 计算绝对值函数,例如:1.3和-1.3的绝对值都是1.3。
# np.where(): 三元条件运算符,语法为np.where(condition, x, y),相当于x if condition else y。例如:np.where(arr>0,1,-1)会将正数变为1,非正数变为-1。
# np.multiply(): 元素相乘函数,两个ndarray进行运算时shape必须一致。
# np.divide(): 元素相除函数,两个ndarray进行运算时shape必须一致。注意:数组自己除自己的结果都是1。
# np.mean()/np.sum():计算所有元素的平均值/和,参数可以是number或array
# np.max()/np.min():计算所有元素的最大值/最小值
# np.std()/np.var():计算所有元素的标准差/方差
# 索引函数:
# np.argmax()/np.argmin():返回最大值/最小值的下标索引值
# 累积函数:
# np.cumsum()/np.cumprod():返回一维数组,每个元素都是之前所有元素的累加和/累乘积
# 维度参数:
# 多维数组默认统计全部维度
# 通过axis参数指定统计轴心:0按列统计,1按行统计
# any()函数:当数组中至少有一个元素满足指定条件时返回True,否则返回False。例如判断矩阵a和矩阵b中对应元素是否有一个相等时使用。
# all()函数:当数组中所有元素都满足指定条件时返回True,否则返回False。例如判断矩阵a和矩阵b中所有对应元素是否相等时使用。
# 去重语法:
np.unique(arr)
# np.sort(): 返回排序后的副本,不改变原数组
# arr.sort(): 在原数组上进行排序修改
# sort 参数
# axis: 指定排序的轴,默认为-1(最后一个轴)
# kind: 排序算法,可选'quicksort'、'mergesort'、'heapsort'、'stable'
# order: 指定排序字段,用于结构化数组
# dot():矩阵乘法
# 情况1:行列数相等(如3×3.dot(3×3))
# 情况2:行列数相反(如2×3.dot(3×2))
# 直接运算符:arr3 = arr1 + arr2
# multiply函数:arr5 = np.multiply(arr1, arr2)