如何将Pandas中同属性多列数据转为Numpy二维矩阵存储?
提取Pandas数据集中分散列的属性为Numpy浮点矩阵
我来帮你搞定这个问题,把分散在12列的chroma_cens的kurtosis属性转换成浮点型Numpy二维矩阵其实很直观,分几步操作就行:
步骤1:定位目标列
首先你需要确认DataFrame中哪12列对应chroma_cens的kurtosis属性。根据你描述的数据集结构,这12列要么是前12列(因为首行特征里chroma_cens重复12次对应这些数值),要么是列名包含chroma_cens和kurtosis标识的列。
- 如果是前12列,直接通过位置筛选:
target_cols = df.columns[:12] - 如果列名有明确标识(比如
chroma_cens_kurtosis_1到chroma_cens_kurtosis_12),可以用列名匹配并确保顺序正确:# 筛选包含关键词的列 target_cols = [col for col in df.columns if 'chroma_cens' in col and 'kurtosis' in col] # 按编号排序,保证1-12的顺序 target_cols = sorted(target_cols, key=lambda x: int(x.split('_')[-1]))
步骤2:转换为Numpy浮点矩阵
定位到目标列后,直接提取数值并转换为浮点型Numpy数组:
# 提取数据并转换为float类型,再转为Numpy数组 kurtosis_matrix = df[target_cols].astype(float).values
如果你需要特定的浮点类型(比如float32),可以修改astype的参数:
kurtosis_matrix = df[target_cols].astype('float32').values
验证结果
你可以通过以下代码确认结果符合预期:
print("矩阵形状:", kurtosis_matrix.shape) # 输出应为 (数据集行数, 12) print("数据类型:", kurtosis_matrix.dtype) # 输出应为 float64 或 float32 print("第一行数据:", kurtosis_matrix[0]) # 对应你提供的首行12个数值
这样得到的kurtosis_matrix就是每行对应原数据一行、每个行向量包含12个浮点数值的二维矩阵了。
内容的提问来源于stack exchange,提问作者Ishwar
相关产品推荐
相关产品推荐

