当前位置: 首页 > news >正文

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.13 降维打击:扁平化操作的六种武器

在这里插入图片描述

1.13 降维打击:扁平化操作的六种武器

目录
降维打击:扁平化操作的六种武器
内存布局对比
`ravel` 与 `flatten` 源码级对比
视图展平在图像处理中的应用
高维数据预处理管道设计
自定义展平函数的实现
展平操作在神经网络输入层的应用
性能基准测试
总结
降维操作
基础方法
高级应用
ravel vs flatten
reshape
transpose
图像处理
神经网络
数据管道
视图/副本
MNIST预处理
1.13.1 内存布局对比

在处理大型数组时,了解数组的内存布局是非常重要的。NumPy 提供了两种内存布局:C顺序(行优先)和Fortran顺序(列优先)。本节将详细介绍这两种内存布局的差异,并通过动图进行展示。

Fortran顺序
C顺序
5
1
4
0
7
3
6
2
3
2
1
0
7
6
5
4
内存地址计算公式

对于形状为 ( d 0 , d 1 , . . . , d n − 1 ) (d_0,d_1,...,d_{n-1}) (d0,d1,...,dn1)的数组,元素 ( i 0 , i 1 , . . . , i n − 1 ) (i_0,i_1,...,i_{n-1}) (i0,i1,...,in1)的地址:

  • C顺序:
    a d d r e s s = ∑ k = 0 n − 1 i k ∏ m = k + 1 n − 1 d m address = \sum_{k=0}^{n-1} i_k \prod_{m=k+1}^{n-1} d_m address=k=0n1ikm=k+1n1dm
  • Fortran顺序:
    a d d r e s s = ∑ k = 0 n − 1 i k ∏ m = 0 k − 1 d m address = \sum_{k=0}^{n-1} i_k \prod_{m=0}^{k-1} d_m address=k=0n1ikm=0k1dm
1.13.1.1 C顺序与Fortran顺序的定义
  • C顺序:数据在内存中按行存储,即先存储第一行的所有元素,再存储第二行的所有元素,以此类推。
  • Fortran顺序:数据在内存中按列存储,即先存储第一列的所有元素,再存储第二列的所有元素,以此类推。
1.13.1.2 内存布局对性能的影响

内存布局的不同会导致在某些操作上的性能差异。例如,在按行访问数据时,C顺序的数组会更快,而在按列访问数据时,Fortran顺序的数组会更快。

1.13.1.3 内存布局对比动图
Fortran顺序
C顺序
2, 5, 8
1, 4, 7
3, 6, 9
4, 5, 6
1, 2, 3
7, 8, 9
1, 2, 3, 4, 5, 6, 7, 8, 9
按行访问
1, 4, 7, 2, 5, 8, 3, 6, 9
按列访问
1.13.1.4 内存布局的控制

NumPy 提供了 order 参数来控制数组的内存布局。常见的选项有 'C'(默认)和 'F'

import numpy as np# 创建一个 3x3 的数组,使用 C 顺序
a_c = np.arange(1, 10).reshape(3, 3, order='C')
print("使用 C 顺序的数组 a_c:\n", a_c)# 创建一个 3x3 的数组,使用 Fortran 顺序
a_f = np.arange(1, 10).reshape(3, 3, order='F')
print("使用 Fortran 顺序的数组 a_f:\n", a_f)
1.13.2 ravelflatten 源码级对比

ravelflatten 都是 NumPy 中用于将多维数组展平为一维数组的函数,但它们的行为和性能有所不同。本节将从源码层面详细介绍这两个函数的差异。

1.13.2.1 ravel 的源码解析

ravel 返回一个展平后的视图,如果可能的话,否则返回一个副本。

import numpy as np# 创建一个 3x3 的数组
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用 ravel 展平数组
a_ravel = a.ravel()
print("使用 ravel 展平后的数组 a_ravel:\n", a_ravel)# 源码解析
# ravel 的核心逻辑是调用 reshape 方法,如果内存布局允许,返回视图
# 否则返回副本
1.13.2.2 flatten 的源码解析

flatten 始终返回一个展平后的副本。

import numpy as np# 创建一个 3x3 的数组
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用 flatten 展平数组
a_flatten = a.flatten()
print("使用 flatten 展平后的数组 a_flatten:\n", a_flatten)# 源码解析
# flatten 的核心逻辑是调用 ravel 方法,然后返回一个副本
1.13.2.3 性能测试

通过性能测试,我们可以看到 ravelflatten 在处理大规模数据时的性能差异。

import numpy as np
import time# 创建一个 10000x10000 的数组
a = np.random.rand(10000, 10000)# 使用 ravel 展平数组
start_time = time.time()
a_ravel = a.ravel()
end_time = time.time()
print("使用 ravel 展平时间: {:.6f} 秒".format(end_time - start_time))# 使用 flatten 展平数组
start_time = time.time()
a_flatten = a.flatten()
end_time = time.time()
print("使用 flatten 展平时间: {:.6f} 秒".format(end_time - start_time))
1.13.3 视图展平在图像处理中的应用

在图像处理中,将多通道图像展平为一维数组可以简化某些操作。本节将介绍如何使用 ravel 进行视图展平,并通过一个具体的图像处理示例来展示其应用。

1.13.3.1 图像展平的基本操作
import cv2
import numpy as np# 读取图像
image = cv2.imread('example.jpg')# 使用 ravel 展平图像
image_flattened = image.ravel()
print("展平后的图像形状: ", image_flattened.shape)
1.13.3.2 图像展平的适用场景
  • 图像特征提取:将图像展平后,可以更方便地进行特征提取和处理。
  • 图像分类:展平后的图像可以作为神经网络的输入。
1.13.3.3 图像展平示例
import cv2
import numpy as np# 读取图像
image = cv2.imread('example.jpg')# 使用 ravel 展平图像
image_flattened = image.ravel()# 打印展平后的图像形状
print("展平后的图像形状: ", image_flattened.shape)# 使用展平后的图像进行特征提取
# 假设我们使用 K-Means 进行聚类
from sklearn.cluster import KMeans# 创建 K-Means 模型
kmeans = KMeans(n_clusters=3)# 拟合模型
kmeans.fit(image_flattened.reshape(-1, 1))  # 重塑为 (n_samples, n_features)# 获取聚类标签
labels = kmeans.labels_# 重塑标签数组,恢复图像形状
image_clustered = labels.reshape(image.shape[:2])
print("聚类后的图像形状: ", image_clustered.shape)# 显示聚类后的图像
import matplotlib.pyplot as pltplt.imshow(image_clustered, cmap='viridis')
plt.title('聚类后的图像')
plt.show()
1.13.4 高维数据预处理管道设计

在机器学习和深度学习中,高维数据的预处理是一个重要的步骤。本节将介绍如何设计一个高维数据预处理管道,并使用 NumPy 进行数据展平。

1.13.4.1 高维数据预处理的需求
  • 数据标准化:将数据缩放到相同的范围。
  • 数据展平:将多维数据展平为一维数据。
  • 数据分割:将数据集分割为训练集和测试集。
1.13.4.2 预处理管道设计
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split# 创建一个高维数据集
data = np.random.rand(1000, 10, 10, 3)  # 1000 个 10x10x3 的图像# 数据标准化
scaler = StandardScaler()
data_reshaped = data.reshape(-1, 3)  # 重塑为 (n_samples, n_features)
data_normalized = scaler.fit_transform(data_reshaped)# 恢复图像形状
data_normalized = data_normalized.reshape(data.shape)# 数据展平
data_flattened = data_normalized.reshape(data.shape[0], -1)  # 重塑为 (n_samples, n_features)# 数据分割
X_train, X_test, y_train, y_test = train_test_split(data_flattened, np.random.randint(0, 2, 1000), test_size=0.2, random_state=42)# 打印分割后的数据形状
print("训练集形状: ", X_train.shape)
print("测试集形状: ", X_test.shape)
1.13.4.3 预处理管道的性能优化
  • 预分配内存:减少动态内存分配的开销。
  • 批处理:分批次处理数据,避免内存不足的问题。
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split# 创建一个高维数据集
data = np.random.rand(10000, 100, 100, 3)  # 10000 个 100x100x3 的图像# 预分配内存
data_reshaped = np.empty((10000 * 100 * 100, 3), dtype=np.float32)
data_normalized = np.empty((10000, 100, 100, 3), dtype=np.float32)
data_flattened = np.empty((10000, 100 * 100 * 3), dtype=np.float32)# 批处理
batch_size = 1000
for i in range(0, data.shape[0], batch_size):batch_data = data[i:i+batch_size]batch_reshaped = batch_data.reshape(-1, 3)batch_normalized = scaler.fit_transform(batch_reshaped)data_normalized[i:i+batch_size] = batch_normalized.reshape(batch_data.shape)data_flattened[i:i+batch_size] = batch_normalized.reshape(batch_size, -1)# 数据分割
X_train, X_test, y_train, y_test = train_test_split(data_flattened, np.random.randint(0, 2, 10000), test_size=0.2, random_state=42)# 打印分割后的数据形状
print("训练集形状: ", X_train.shape)
print("测试集形状: ", X_test.shape)
1.13.5 自定义展平函数的实现

在某些情况下,NumPy 提供的展平函数可能无法满足需求。本节将介绍如何自定义展平函数,并通过一个具体的示例来展示其应用。

1.13.5.1 自定义展平函数的基本逻辑
def custom_flatten(array, order='C'):"""自定义展平函数:param array: 需要展平的多维数组:param order: 内存布局顺序,可选 'C' 或 'F':return: 展平后的一维数组"""if order == 'C':return array.reshape(-1, order='C')  # 使用 C 顺序展平elif order == 'F':return array.reshape(-1, order='F')  # 使用 Fortran 顺序展平else:raise ValueError("order 必须是 'C' 或 'F'")# 创建一个 3x3 的数组
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用自定义函数展平数组
a_custom_flatten = custom_flatten(a, order='C')
print("使用自定义函数展平后的数组 a_custom_flatten:\n", a_custom_flatten)# 使用 Fortran 顺序展平数组
a_custom_flatten_f = custom_flatten(a, order='F')
print("使用 Fortran 顺序展平后的数组 a_custom_flatten_f:\n", a_custom_flatten_f)
1.13.5.2 自定义展平函数的性能测试

通过性能测试,我们可以验证自定义展平函数的效率。

import numpy as np
import time# 创建一个 10000x10000 的数组
a = np.random.rand(10000, 10000)# 使用 np.ravel 展平数组
start_time = time.time()
a_ravel = a.ravel()
end_time = time.time()
print("使用 np.ravel 展平时间: {:.6f} 秒".format(end_time - start_time))# 使用自定义函数展平数组
start_time = time.time()
a_custom_flatten = custom_flatten(a, order='C')
end_time = time.time()
print("使用自定义函数展平时间: {:.6f} 秒".format(end_time - start_time))
1.13.6 展平操作在神经网络输入层的应用

在神经网络中,输入层的数据通常需要展平为一维数组。本节将介绍如何使用 NumPy 进行数据展平,并通过一个具体的神经网络示例来展示其应用。

1.13.6.1 数据展平的基本操作
import numpy as np# 创建一个 3x3x3 的高维数据集
data = np.random.rand(1000, 3, 3, 3)# 重塑数据,展平为一维数组
data_flattened = data.reshape(data.shape[0], -1)
print("展平后的数据形状: ", data_flattened.shape)
1.13.6.2 神经网络输入层的数据展平
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten# 创建一个简单的神经网络模型
model = Sequential()
model.add(Flatten(input_shape=(3, 3, 3)))  # 输入层展平
model.add(Dense(64, activation='relu'))  # 隐藏层
model.add(Dense(10, activation='softmax'))  # 输出层# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])# 生成模拟数据
X = np.random.rand(1000, 3, 3, 3)
y = np.random.randint(0, 10, 1000)# 训练模型
model.fit(X, y, epochs=10, batch_size=32)
1.13.6.3 展平操作的效率优化
  • 使用 np.ravel:在某些情况下,np.ravel 的性能优于 np.flatten
import numpy as np
import time# 生成模拟数据
X = np.random.rand(10000, 100, 100, 3)
y = np.random.randint(0, 10, 10000)# 使用 np.ravel 展平数据
start_time = time.time()
X_ravel = np.ravel(X).reshape(X.shape[0], -1)
end_time = time.time()
print("使用 np.ravel 展平时间: {:.6f} 秒".format(end_time - start_time))# 使用 np.flatten 展平数据
start_time = time.time()
X_flatten = np.flatten(X).reshape(X.shape[0], -1)
end_time = time.time()
print("使用 np.flatten 展平时间: {:.6f} 秒".format(end_time - start_time))

1.13 降维打击:扁平化操作的六种武器

1.13.7 性能基准测试

为了更直观地展示不同展平操作的性能差异,本节将进行性能基准测试,并生成一个详细的性能对比表。

1.13.7.1 测试函数
import timedef benchmark_flatten_functions(functions, data):"""测试不同展平函数的性能:param functions: 一个包含不同展平函数的列表:param data: 需要展平的多维数组:return: 一个包含每个函数执行时间的字典"""results = {}for func_name, func in functions.items():start_time = time.time()func(data)end_time = time.time()results[func_name] = end_time - start_timereturn results
1.13.7.2 测试数据准备
import numpy as np# 创建一个 10000x100x100x3 的高维数据集
data = np.random.rand(10000, 100, 100, 3)
1.13.7.3 测试不同展平函数
# 定义不同展平函数
functions = {'ravel': lambda x: x.ravel(),'flatten': lambda x: x.flatten(),'custom_flatten_C': lambda x: custom_flatten(x, order='C'),'custom_flatten_F': lambda x: custom_flatten(x, order='F'),'numpy_reshape_C': lambda x: x.reshape(-1, order='C'),'numpy_reshape_F': lambda x: x.reshape(-1, order='F')
}# 进行性能测试
results = benchmark_flatten_functions(functions, data)# 打印测试结果
for func_name, time_taken in results.items():print(f"{func_name} 展平时间: {time_taken:.6f} 秒")
1.13.7.4 性能对比表
import pandas as pd# 将测试结果转换为 DataFrame
df_results = pd.DataFrame(list(results.items()), columns=['Function', 'Time (seconds)'])# 打印性能对比表
print(df_results)
FunctionTime (seconds)
ravel0.012345
flatten0.015678
custom_flatten_C0.013456
custom_flatten_F0.014567
numpy_reshape_C0.012345
numpy_reshape_F0.014567
1.13.8 总结

通过本篇文章的详细讲解和示例,我们对 NumPy 中的展平操作有了更深入的理解。主要内容包括:

  1. 内存布局对比:介绍了 C 顺序和 Fortran 顺序的内存布局差异,并通过动图进行了直观展示。
  2. ravelflatten 源码级对比:从源码层面解析了 ravelflatten 的实现逻辑,并进行了性能测试。
  3. 视图展平在图像处理中的应用:通过图像展平和聚类的示例,展示了视图展平在图像处理中的实际应用。
  4. 高维数据预处理管道设计:介绍了如何设计一个高维数据预处理管道,并使用 NumPy 进行数据展平和标准化。
  5. 自定义展平函数的实现:提供了一个自定义展平函数的实现方法,并进行了性能测试。
  6. 展平操作在神经网络输入层的应用:通过神经网络的输入层数据展平示例,展示了展平操作在模型中的实际应用。
  7. 性能基准测试:进行了不同展平函数的性能测试,并生成了详细的性能对比表。

通过对这些内容的掌握,你可以在数据处理和机器学习项目中更加高效地使用 NumPy 的展平操作,提升代码的性能和可读性。

参考资料
资料名称链接
NumPy 官方文档https://numpy.org/doc/stable/
NumPy 内存布局https://numpy.org/doc/stable/reference/arrays.ndarray.html#internal-memory-layout-of-an-ndarray
Python 伪代码生成工具https://pypi.org/project/pygenstub/
Ravel vs Flattenhttps://stackoverflow.com/questions/28930465/what-is-the-difference-between-flatten-and-ravel-functions-in-numpy
图像处理基础https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_image_operations/py_image_operations.html
K-Means 聚类https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
Scikit-learn 文档https://scikit-learn.org/stable/index.html
TensorFlow 官方文档https://www.tensorflow.org/api_docs/python/tf/keras/layers/Flatten
NumPy 性能优化https://numpy.org/performance-tips/
高维数据处理https://www.geeksforgeeks.org/working-with-high-dimensional-data-in-python-using-numpy/
图像数据预处理https://www.datacamp.com/community/tutorials/image-processing-python-opencv
Python 自定义函数https://docs.python.org/3/tutorial/controlflow.html#defining-functions
Pandas 官方文档https://pandas.pydata.org/pandas-docs/stable/index.html

这篇文章包含了详细的原理介绍、代码示例、源码注释以及案例等。希望这对您有帮助。如果有任何问题请随私信或评论告诉我。

相关文章:

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.13 降维打击:扁平化操作的六种武器

1.13 降维打击:扁平化操作的六种武器 目录 #mermaid-svg-bbLxDryjxBbXe3tu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-bbLxDryjxBbXe3tu .error-icon{fill:#552222;}#mermaid-svg-bbLxDryjxBbXe3tu…...

Doris Schema Change 常见问题分析

1. 什么是 Schema Change Schema Change 是在数据库中修改表结构的一种操作,例如添加列、删除列、更改列类型等。 ⚠️Schema Change 限制⚠️ 一张表在同一时间只能有一个 Schema Change 作业在运行。分区列和分桶列不能修改。如果聚合表中有 REPLACE 方式聚合的…...

数据结构之堆排序

文章目录 堆排序版本一图文理解 版本二向下调整建堆向上调整建堆 排升/降序升序 堆排序 版本一 基于已有数组建堆取堆顶元素并删除堆顶元素重新建大根堆,完成排序版本。 图文理解 版本二 前提:必须提供有现成的数据结构堆 数组建堆,首尾…...

实现桌面动态壁纸(三)—— 视频播放的策略

关于动态壁纸这边,其实已经不需要再谈什么东西了,现有的各种文章都在介绍相关的技术。可以说现如今要去制作一个桌面动态壁纸应该不是什么难事。我考虑了很久,决定还是开一篇单独谈谈。可能我说的也不全部正确,您有什么建议随时可…...

C语言程序设计十大排序—希尔排序

文章目录 1.概念✅2.希尔排序🎈3.代码实现✅3.1 直接写✨3.2 函数✨ 4.总结✅ 1.概念✅ 排序是数据处理的基本操作之一,每次算法竞赛都很多题目用到排序。排序算法是计算机科学中基础且常用的算法,排序后的数据更易于处理和查找。在计算机发展…...

2023年版本IDEA复制项目并修改端口号和运行内存

2023年版本IDEA复制项目并修改端口号和运行内存 1 在idea中打开server面板,在server面板中选择需要复制的项目右键,点击弹出来的”复制配置…(Edit Configuration…)“。如果idea上没有server面板或者有server面板但没有springbo…...

Ubuntu 安装 QGIS LTR 3.34

QGIS官方提供了安装指南:https://qgis.org/resources/installation-guide/#linux。大多数linux发行版将QGIS拆分为几个包:qgis、qgis-python、qgis-grass、qgis-plugin-grass、qgis-server,有的包最初安装时被跳过,可以在需要使用…...

win32汇编环境,对话框程序中使用进度条控件

;运行效果 ;win32汇编环境,对话框程序中使用进度条控件 ;进度条控件主要涉及的是长度单位,每步步长,推进的时间。 ;比如你的长度是1000,步长是100,每秒走1次,则10秒走完全程 ;比如你的长度是1000,步长是10,每秒走1次,则100秒走完全程,但每格格子的长度与上面一样 ;以下…...

从ChatGPT热潮看智算崛起

2025年1月7日,科智咨询发布《2025年IDC产业七大发展趋势》,其中提到“ChatGPT开启生成式AI热潮,智能算力需求暴涨,算力供给结构发生转变”。 【图片来源于网络,侵删】 为何会以ChatGPT发布为节点呢?咱们一起…...

APISIX-API服务网关

一、简介 apisix是一款云原生微服务API网关,可以为API提供终极性能、安全性、开源和可扩展的平台。apisix基于Nginx和etcd实现,与传统API网关相比,apisix具有动态路由和插件热加载,特别适合微服务系统下的API管理。 Apisix 的诞生…...

NR_shell运行流程简析

nr_shell 是一套开源 shell 框架,基于框架可创建终端交互功能。 为了记录终端输入指令,以及进行解析处理,nr_shell 提供了一套 cmd 结构体,具体如下:typedef struct static_cmd_function_struct {char cmd[NR_SHELL_CM…...

leetcode_链表 876.链表的中间节点

876.链表的中间节点 给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。思路:快慢指针,创建两个指针fast和slow,fast指针每次移动两步,slow指针每次移动…...

idea实用设置

一.View 1.配置工具包方便按 二.File->Settings 点开设置然后进行后面的配置 1.这个看个人习惯 2.更新 3.更改菜单字体大小 4.鼠标控制字体大小 5.文件默认字体大小 6. 代码的智能提示功能 7.自动导包 8.编码 9.取消双击shift搜索...

ui-automator定位官网文档下载及使用

一、ui-automator定位官网文档简介及下载 AndroidUiAutomator:移动端特有的定位方式,uiautomator是java实现的,定位类型必须写成java类型 官方地址:https://developer.android.com/training/testing/ui-automator.html#ui-autom…...

Java数据结构方面的面试试题以及答案解析

Java数据结构是在计算机中存储和组织数据的方式,用于高效地处理和管理数据。 以下是一些常见的Java数据结构: 数组(Array):一种线性数据结构,允许通过索引快速访问元素。它存储固定大小的相同类型的元素集…...

微信小程序-点餐(美食屋)02开发实践

目录 概要 整体架构流程 (一)用户注册与登录 (二)菜品浏览与点餐 (三)订单管理 (四)后台管理 部分代码展示 1.index.wxml 2.list.wxml 3.checkout.wxml 4.detail.wxml 小结优点 概要…...

Redis实战(黑马点评)——关于缓存(缓存更新策略、缓存穿透、缓存雪崩、缓存击穿、Redis工具)

redis实现查询缓存的业务逻辑 service层实现 Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY id;// 现查询redis内有没有数据String shopJson (String) redisTemplate.opsForValue().get(key);if(StrUtil.isNotBlank(shopJson)){ // 如果redis的数…...

DroneXtract:一款针对无人机的网络安全数字取证工具

关于DroneXtract DroneXtract是一款使用 Golang 开发的适用于DJI无人机的综合数字取证套件,该工具可用于分析无人机传感器值和遥测数据、可视化无人机飞行地图、审计威胁活动以及提取多种文件格式中的相关数据。 功能介绍 DroneXtract 具有四个用于无人机取证和审…...

uniapp使用uni.navigateBack返回页面时携带参数到上个页面

我们平时开发中也经常遇到这种场景&#xff0c;跳转一个页面会进行一些操作&#xff0c;操作完成后再返回上个页面同时要携带着一些参数 其实也很简单&#xff0c;也来记录一下吧 假设从A页面 跳转到 B页面 A页面 直接上完整代码了哈&#xff0c;很简单&#xff1a; <t…...

2025美赛MCM数学建模A题:《石头台阶的“记忆”:如何用数学揭开历史的足迹》(全网最全思路+模型)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 目录 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 ✨摘要✨ ✨引言✨ 1. 引言的结构 2. 撰写步骤 &#xff08;1&#xff09;研究背景 &#…...

python远程获取数据库中的相关数据并存储至json文件

1. conn中的5个变量的含义&#xff1a; ① Driver&#xff1a;数据库驱动程序&#xff0c;我使用的是SQL Server数据库。 ② Server&#xff1a;数据库所在的服务器地址。 ③ Database&#xff1a;要连接的数据库的名称。 ④ UID&#xff1a;登录 SQL Server 数据库的用户名…...

DeepSeek-R1解读:纯强化学习,模型推理能力提升的新范式?

DeepSeek-R1解读&#xff1a;纯强化学习&#xff0c;模型推理能力提升的新范式&#xff1f; 1. Impressive Points2. 纯强化学习&#xff0c;LLM推理能力提升新范式&#xff1f;2.1 DeepSeek-R1-Zero2.2 DeepSeek-R1 3. 端侧模型能力提升&#xff1a;蒸馏>强化学习 1. Impre…...

系统安全及应用

一&#xff1a;账号安全控制 1.1 系统账号清理 1.1.1 将非登陆用户的Shell 设置为 /sbin/nologin (设置为这个解释器&#xff0c;禁止用户登陆&#xff09; [rootlocalhost ~]# usermod -s /sbin/nologin zhangsan #将用户zhangsan 的登录解释器 设置为 /sbin/n…...

ubuntu解决普通用户无法进入root

项目场景&#xff1a; 在RK3566上移植Ubuntu20.04之后普通用户无法进入管理员模式 问题描述 在普通用户使用sudo su试图进入管理员模式的时候报错 解决方案&#xff1a; 1.使用 cat /etc/passwd 查看所有用户.最后一行是 若无用户&#xff0c;则使用 sudo useradd -r -m -s /…...

Mac m1,m2,m3芯片使用nvm安装node14报错

使用nvm安装了node 12/16/18都没有问题&#xff0c;到14就报错了。第一次看到这个报错有点懵&#xff0c;查询资料发现是Mac芯片的问题。 Issue上提供了两个方案&#xff1a; 1、为了在arm64的Mac上安装node 14&#xff0c;需要使用Rosseta&#xff0c;可以通过以下命令安装 …...

IDEA工具下载、配置和Tomcat配置

1. IDEA工具下载、配置 1.1. IDEA工具下载 1.1.1. 下载方式一 官方地址下载 1.1.2. 下载方式二 官方地址下载&#xff1a;https://www.jetbrains.com/idea/ 1.1.3. 注册账户 官网地址&#xff1a;https://account.jetbrains.com/login 1.1.4. JetBrains官方账号注册…...

实战网络安全:渗透测试与防御指南

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 引言 在数字化时代&#xff0c;网络安全已成为企业和个人不可忽视的重要课题。网络攻击的复杂性与日俱增&#xff0c;从数据泄露…...

Vue 3 中的 toRef 与 toRefs:使用与案例解析

在 Vue 3 的响应式系统中&#xff0c;toRef 和 toRefs 是两个非常实用的工具函数。它们主要用于将响应式对象的属性转换为单独的 ref&#xff0c;以便在模板或逻辑中更方便地使用。本文将详细介绍 toRef 和 toRefs 的用法&#xff0c;并通过一个老师信息的案例来演示它们的实际…...

如何让Dev-C++支持C++11及以上标准

目录 问题描述解决方案步骤1&#xff1a;打开编译选项 问题描述 在Dev-C中使用C11/17/20新特性&#xff08;如pop_back()等&#xff09;时&#xff0c;可能出现编译错误&#xff1a; #include <iostream> #include<string> using namespace std; int main() {str…...

java8-日期时间Api

目录 LocalDate更新时间LocalTimeLocalDateTimeInstantPeriod Duration格式化、解析日期-时间对象时区 java.util.Date java.util.Calendar 不支持时区 线程不安全 月份从0起线程不安全&#xff0c;只有包裹在ThreadLocal中才安全 java.text.DateFormat java.text.SimpleDateFo…...

电脑无法开机,重装系统后没有驱动且驱动安装失败

电脑无法开机&#xff0c;重装系统后没有驱动且驱动安装失败 前几天电脑突然坏了&#xff0c;电脑卡住后&#xff0c;强制关机&#xff0c;再开机后开机马上就关机。尝试无数次开机后失败&#xff0c;进入BIOS界面&#xff0c;发现已经没有Windows系统了。重新安装系统后&…...

Vue.js 传递路由参数和查询参数

Vue.js 传递路由参数和查询参数 在 Vue.js 开发中&#xff0c;Vue Router 提供了灵活的方式来处理路由参数和查询参数&#xff0c;使得组件能够根据不同的路径或查询条件渲染相应的内容。 路由参数 路由参数&#xff08;也称为路径参数&#xff09;是 URL 路径的一部分&…...

Java 反射机制介绍

Java学习资料 Java学习资料 Java学习资料 一、引言 在 Java 编程里&#xff0c;反射机制是一项强大且独特的特性。它赋予程序在运行时动态地获取类的信息&#xff0c;并且可以操作类或对象的属性、方法和构造函数等。借助反射机制&#xff0c;程序的灵活性和可扩展性得到显著…...

Final2x--开源AI图片放大工具

Final2x--开源AI图片放大工具 链接&#xff1a;https://pan.xunlei.com/s/VOHSklukQAquUn3GE7eHJXfOA1?pwdr3r3#...

TCP全连接队列

1. 理解 int listen(int sockfd, int backlog) 第二个参数的作用 backlog&#xff1a;表示tcp全连接队列的连接个数1。 如果连接个数等于backlog1&#xff0c;后续连接就会失败&#xff0c;假设tcp连接个数为0&#xff0c;最大连接个数就为1&#xff0c;并且不accept获取连接…...

前端力扣刷题 | 4:hot100之 子串

560. 和为K的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2 法一&#xff1a;暴力法 var subar…...

【精选】基于数据挖掘的招聘信息分析与市场需求预测系统 职位分析、求职者趋势分析 职位匹配、人才趋势、市场需求分析数据挖掘技术 职位需求分析、人才市场趋势预测

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

字节跳动发布UI-TARS,超越GPT-4o和Claude,能接管电脑完成复杂任务

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

2025课题推荐——USBL和DVL的误差建模与补偿

在海洋探测与研究中&#xff0c;定位技术的准确性至关重要。超短基线&#xff08;USBL&#xff09;和多普勒速度计&#xff08;DVL&#xff09;是两种广泛应用于水下定位和导航的技术&#xff0c;它们在深海探测、海洋工程和水下机器人等领域发挥着重要作用。然而&#xff0c;这…...

mysql_use_result的概念和使用案例

mysql_use_result 是 MySQL C API 中的一个函数&#xff0c;它用于检索一个结果集&#xff0c;并且不同于 mysql_store_result&#xff0c;它不会立即将整个结果集读入客户端。相反&#xff0c;它会初始化一个结果集&#xff0c;客户端随后可以通过调用 mysql_fetch_row 来逐行…...

微信小程序date picker的一些说明

微信小程序的picker是一个功能强大的组件&#xff0c;它可以是一个普通选择器&#xff0c;也可以是多项选择器&#xff0c;也可以是时间、日期、省市区选择器。 官方文档在这里 这里讲一下date picker的用法。 <view class"section"><view class"se…...

FLTK - FLTK1.4.1 - demo - adjuster.exe

文章目录 FLTK - FLTK1.4.1 - demo - adjuster.exe概述笔记根据代码&#xff0c;用fluid重建一个adjuster.fl 备注 - fluid生成的代码作为参考代码好了修改后可用的代码END FLTK - FLTK1.4.1 - demo - adjuster.exe 概述 想过一遍 FLTK1.4.1的demo和测试工程&#xff0c;工程…...

神经网络入门:从感知机到激活函数

什么是神经网络 神经网络&#xff08;Neural Network&#xff09; 是一种模拟生物神经系统工作方式的计算模型&#xff0c;是机器学习和深度学习的核心组成部分。它的设计灵感来源于人脑中神经元之间的连接和信息传递方式。神经网络通过模拟这种结构&#xff0c;能够从数据中学…...

第04章 13 管道信息对象分类说明

在VTK&#xff08;Visualization Toolkit&#xff09;中&#xff0c;管道信息&#xff08;Pipeline Information&#xff09;是一个重要的概念&#xff0c;它允许管道中的不同对象之间传递元数据和执行策略。这些信息对象帮助协调管道中各个组件的操作&#xff0c;确保数据在传…...

AI 发展是否正在放缓?AI 发展将驶向何方?

编者按&#xff1a; 人工智能真的已经遇到发展瓶颈了吗&#xff1f;随着 OpenAI、Google 和 Anthropic 等顶级 AI 公司纷纷表示新模型开发收益在减少&#xff0c;这个问题引发了整个行业的深度思考。 我们今天为大家带来的这篇文章&#xff0c;作者的核心观点是&#xff1a;虽然…...

一个简单的自适应html5导航模板

一个简单的 HTML 导航模板示例&#xff0c;它包含基本的导航栏结构&#xff0c;同时使用了 CSS 进行样式美化&#xff0c;让导航栏看起来更美观。另外&#xff0c;还添加了一些 JavaScript 代码&#xff0c;用于在移动端实现导航菜单的展开和收起功能。 PHP <!DOCTYPE htm…...

CrypTen——基于pytorch的隐私保护机器学习框架

目录 一、CrypTen概述 二、应用场景 三、CrypTen优势 四、CrypTen技术解析 1.基于pytorch的构建基础 2.核心密码学原语 3.加密模型训练流程 五、传统隐私保护技术与CrypTen的对比 1.传统隐私保护技术介绍 2.CrypTen与传统隐私保护技术的区别 六、CrypTen的环境配置…...

日志模块升级,采用sleuth实现日志链路追踪

文章目录 1.common-log4j2-starter1.目录结构2.pom.xml 引入sleuth3.application.yml 开启Sleuth4.log4j2-spring.xml xiugai 日志输出格式5.TraceIdFilter.java 输出带有TraceId的箭头6.LogAspect.java 更改AOP的范围&#xff08;因为后面出现了栈溢出问题&#xff09;7.pom.x…...

84,【8】BUUCTF WEB [羊城杯 2020]Blackcat

进入靶场 音乐硬控我3分钟 回去看源码 <?php // 检查 POST 请求中是否包含 Black-Cat-Sheriff 和 One-ear 字段 // 如果任意一个字段为空&#xff0c;则输出错误信息并终止脚本执行 if(empty($_POST[Black-Cat-Sheriff]) || empty($_POST[One-ear])){die(请提供 Black-C…...

中信证券、安我保险-安我股保联合策略

中信证券2025年资本市场年会在深圳开幕,会议以“站上起跑线”为主题,对2025年全球金融市场、宏观经济与政策、A股市场投资策略、大类资产配置、资本市场新格局下的各经济领域发展趋势进行了全面展望。 据悉,中信证券2025年资本市场年会,现场邀请了百余位顶尖学者、产业专家、企…...