Python笔记(十一)--Numpy(一)

这一节了解一下Python中的Numpy基础,NumPy是Python语言的一个扩展程序库,它的核心是ndarray,也就是N维数组对象。你可以把它理解成"高性能、固定大小、元素类型统一"的列表,专门用来存数字、做矩阵和数组运算,简单总结如下:

API:

  1. np.array():创建ndarray数组,把列表/元组转为numpy数组。numpy最基础入口,支持指定dtype、维度。
python 复制代码
arr = np.array(序列, dtype=数据类型)
关联A:np.asarray(),区别是array默认拷贝,asarray尽量不拷贝。

2.np.arange():生成等差一维数组,类似python range,支持浮点数。快速生成连续数值序列。

python 复制代码
arr = np.arange(start, stop, step, dtype)
关联:np.linspace()

3.np.linspace():在起止区间均匀生成指定个数的元素,包含首尾,画函数曲线、采样点。

python 复制代码
arr = np.linspace(start, stop, num=数量)
关联:np.logspace(等比数列)

4.np.zeros():创建全0数组,初始化占位数组。

python 复制代码
arr = np.zeros(shape, dtype)
关联:np.zeros_like,按另一个数组形状生成全0。
  1. np.ones():创建全1数组,权重初始化、掩码。
python 复制代码
arr = np.ones(shape, dtype)
关联:np.ones_like
  1. np.empty():创建空数组,不初始化值,追求性能,后续会覆盖所有元素场景。
python 复制代码
arr = np.empty(shape)
关联:np.empty_like

7.np.eye(),生成单位矩阵,线性代数、矩阵初始化。

python 复制代码
mat = np.eye(N, M=None)

8.arr.shape,数组属性,返回每个维度的大小元组,查看维度,判断行列。

python 复制代码
shape_tuple = arr.shape
关联:arr.reshape() 修改形状
  1. arr.reshape():改变数组形状,不修改原始数据,返回新视图。一维转二维、重塑维度。
python 复制代码
new_arr = arr.reshape(行, 列)
关联:arr.flatten()、arr.ravel()

10.arr.flatten(),将多维数组展开成一维,返回拷贝。展平数组,修改结果不影响原数组。

python 复制代码
one_arr = arr.flatten()
关联:arr.ravel()返回视图,修改会影响原数组

11.arr.ndim,属性,获取数组维度数量。判断是一维、二维、三维数组。

python 复制代码
n = arr.ndim

12.arr.size,属性,查看数组元素数据类型,防止类型溢出、精度丢失。

python 复制代码
dt = arr.dtype
关联:arr.astype()
  1. arr.astype():类型强制转换,返回新数组。
python 复制代码
new_arr = arr.astype(np.float32)

15.np.sum():求和,可指定axis按轴求和,统计总和、行和、列和。

python 复制代码
s = np.sum(arr, axis=轴编号)

16.np.mean():求平均值,支持axis。

python 复制代码
m = np.mean(arr, axis=None)
关联:np.average(可加权平均)
  1. np.max() / arr.max():求最大值,支持axis,找极值。
python 复制代码
max_val = np.max(arr, axis=0)
关联:np.argmax返回最大值下标

18.np.min() / arr.min():求最小值,支持axis。

python 复制代码
min_val = np.min(arr)
关联:np.argmin返回最小值下标
  1. np.argmax():返回最大值对应的索引。
python 复制代码
idx = np.argmax(arr, axis=1)
  1. np.argmin():返回最小值对应的索引。
python 复制代码
idx = np.argmin(arr)

21.np.sqrt():逐元素开平方根。

python 复制代码
res = np.sqrt(arr)

22.np.exp():逐元素计算自然指数 e^x。

python 复制代码
res = np.exp(arr)

23.np.concatenate():沿指定轴拼接多个数组。

python 复制代码
new_arr = np.concatenate([a,b], axis=0)
关联:np.vstack、np.hstack

24.np.vstack():垂直堆叠

python 复制代码
new_arr = np.vstack([a,b])

25.np.hstack():水平堆叠

python 复制代码
new_arr = np.hstack([a,b])

26.np.where():条件筛选,满足条件取A,否则取B;也可只返回满足条件的下标。

python 复制代码
res = np.where(条件, 真值, 假值)

栗子:

python 复制代码
import numpy as np

# 构造等差数组,重塑成4行5列
arr = np.arange(20).reshape(4,5)
print("原始数组:\n", arr)


all_sum = np.sum(arr)
col_mean = np.mean(arr, axis=0)
row_max = np.max(arr, axis=1)
pos = np.argmax(arr)
print("全部求和:", all_sum)
print("每一列均值:", col_mean)
print("每一行最大值:", row_max)
print("全局最大值下标:", pos)

#  where条件替换,大于10的值改为0
filter_arr = np.where(arr > 10, 0, arr)
print("过滤后数组:\n", filter_arr)

a = np.ones((2,5))
b = np.zeros((2,5))
stack_arr = np.vstack([a,b])
print("垂直拼接:\n", stack_arr)
python 复制代码
import numpy as np

data = np.array([
    [12, 45, 7.2],
    [18, 39, 8.1],
    [9, 52, 6.5],
    [22, 41, 9.3],
    [15, 44, 7.8]
], dtype=np.float64)
print("原始样本:\n", data)

# 归一化
min_v = np.min(data, axis=0)
max_v = np.max(data, axis=0)
norm_data = (data - min_v) / (max_v - min_v)
print("归一化后:\n", norm_data)

#  展平为一维数组
flat = norm_data.flatten()
print("展平一维:", flat)

# 开根号运算
sqrt_data = np.sqrt(norm_data)
print("开根结果:\n", sqrt_data)

#  筛选:找出第二列特征大于0.5的行
mask = norm_data[:,1] > 0.5
select_data = norm_data[mask]
print("筛选后的样本:\n", select_data)

# 类型转换
int_data = (data * 10).astype(np.int32)
print("转int32:\n", int_data)
相关推荐
芯思路1 小时前
STM32开发学习笔记之十【AI部署】
笔记·stm32·学习
时早玖沐1 小时前
KOOK「找不到语音频道」:同一个错误假设,我犯了三次
python·开源·ai编程
_冷眸_1 小时前
Python 调用大模型 API:最小请求、Base URL 和 401/404 排查
开发语言·人工智能·python
Dumbness1 小时前
UIA 读微信群消息没有 id,怎么判断哪条是新的:后缀对齐在翻历史和撤回时整屏重报
python·算法
甜到心里的蛋糕1 小时前
从 QQ 机器人到 B 站 AI 运营:一套可复现的视频流水线踩坑实录
运维·人工智能·python·自动化·视频制作
张驰咨询公司1 小时前
六西格玛Python DOE试验矩阵:3因子2水平生成与验算
python·六西格玛·实验设计·itertools·doe试验矩阵
江屿风2 小时前
【Plain Language Large Model】【从浏览器到全栈:一课精通Node.js三剑客】流食般投喂
笔记·前端框架·npm·node.js·js·npx
一只大鸽子2 小时前
游戏开发笔记0-Godot启动
笔记·游戏引擎·godot
像风一样自由20202 小时前
2.如何用FastAPI把一个Python算法封装成HTTP服务
python·算法·fastapi