Tensor
-
- 在喂给模型前,必须将输入数据转为`NumPy数组`!
-
- [为什么喂给深度学习框架的数据集,在最后一步必须转为 np.array(NumPy数组)?](#为什么喂给深度学习框架的数据集,在最后一步必须转为 np.array(NumPy数组)?)
- [:"Python 中使用 list 列表来表示数组的" ------ 这句话在科学计算的语境下是错误的。](#:“Python 中使用 list 列表来表示数组的” —— 这句话在科学计算的语境下是错误的。)
- [数据 | 数据类型流转全流程解析(从 DataFrame 到最终模型输入)](#数据 | 数据类型流转全流程解析(从 DataFrame 到最终模型输入))
- 总
- ============
-
- [最终生成的特征数据 X 的形状是 (样本数, 时间步长, 特征数)shape,我们怎么推理/晓得的?](#最终生成的特征数据 X 的形状是 (样本数, 时间步长, 特征数)shape,我们怎么推理/晓得的?)
在喂给模型前,必须将输入数据转为NumPy数组!
为什么喂给深度学习框架的数据集,在最后一步必须转为 np.array(NumPy数组)?
- 框架
- 内存 计算
- 维度属性

:"Python 中使用 list 列表来表示数组的" ------ 这句话在科学计算的语境下是错误的。
-
\] 定义的是 列表(List) **动态增删,且什么都能装**
在这里插入图片描述

总结区分:在整个预处理代码中,list(列表)扮演的是**"临时收集用的塑料袋",而 NumPy Array 扮演的是"最终送入产线的标准集装箱"**。
数据 | 数据类型流转全流程解析(从 DataFrame 到最终模型输入)
数据类型流转全流程解析(从 DataFrame 到最终模型输入)
- 最初数据读取:df = pd.read_csv(...) 二维表
二维表。适合看,适合数据筛选,不能做矩阵计算。
- 读取后提取特征**&临时**收集数据记录 列表
seqs = [] # 或者写成 seqs = list()
for col in cols:
seq = df[col].values.reshape(-1, 1)
seqs.append(seq)
列表
df[col].values,此时我们是纯粹提取数值,我们不需要多数值也不能对数值(记录中的任何数据)做修改,且list列表恰好有这个特性(只可读性)。而且,Python 的 List 的 .append() 方法执行速度极快
总之,在中间处理数据时,用list列表做好不过了
- 压制成完整大矩阵 dataset = np.hstack((seqs)) 当前类型:NumPy 2D Array(完整的二维大矩阵)。
收集工作结束了。我们把装满 9 个独立列向量的"塑料袋(List)"倒出来,用 np.hstack 将它们横向焊死成一个完整、连续的矩阵内存块。此时数据不再是零散的了。
- 最终数据处理结束后,输入到模型前需要保存成/定型为
return np.array(X), np.array(y)当前类型:NumPy 3D Array (X) 和 NumPy 1D/2D Array (y)。
总
整个流程的底层逻辑是:"需要频繁动态增加元素时,使用 Python List ([] 或 list());需要执行数学组合操作或最终交付给模型时,转化为 NumPy Array。"
数据的类型确实在**随着处理目的的不同而不断切换**。
============
最终生成的特征数据 X 的形状是 (样本数, 时间步长, 特征数)shape,我们怎么推理/晓得的?
- 特征数: 所有列?