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

NumPy 中 np.c_ 的用法解析

NumPy 中 np.c_ 的用法解析

np.c_ 是 NumPy 用于沿列方向(第二轴)拼接数组的快捷工具,特别适用于将一维数组组合为二维数组的列。其核心功能是将输入数组按列堆叠,语法为 np.c_[array1, array2, ...]。以下结合 ravel 后的 xxyy 数组场景详细说明:

1. 基础用法:连接一维数组

假设 xxyy 是两个一维数组(或通过 ravel() 展平后的数组):

import numpy as npxx = np.array([1, 2, 3])
yy = np.array([4, 5, 6])
combined = np.c_[xx, yy]  # 沿列方向拼接

结果:
[142536] \begin{bmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{bmatrix} 123456
此时 combined 是一个 3×23 \times 23×2 的二维数组,每列对应原始数组。


2. 连接 ravel 后的数组

xxyy 是二维数组(如网格矩阵),需先展平再连接:

# 生成网格坐标
x = np.linspace(0, 1, 3)  # [0, 0.5, 1]
y = np.linspace(0, 1, 2)  # [0, 1]
xx, yy = np.meshgrid(x, y)  # xx.shape=(2,3), yy.shape=(2,3)# 展平后按列拼接
points = np.c_[xx.ravel(), yy.ravel()]

结果:
[000.5010010.5111] \begin{bmatrix} 0 & 0 \\ 0.5 & 0 \\ 1 & 0 \\ 0 & 1 \\ 0.5 & 1 \\ 1 & 1 \end{bmatrix} 00.5100.51000111
每行表示一个坐标点 (xi,yi)(x_i, y_i)(xi,yi),总行数 = xx.size(或 yy.size)。


3. 关键特性
  • 自动维度提升
    若输入为一维数组,np.c_ 自动将其视为列向量(形状 (n,)(n,1))。
  • 轴方向
    沿第二轴(列)拼接,等价于 np.column_stack,区别于行拼接的 np.r_
  • 长度匹配
    所有输入数组在展平后必须有相同长度,否则报错 ValueError

4. 典型应用场景
  • 机器学习数据集:将特征 XXX 和标签 yyy 合并为训练数据。
  • 坐标生成:将网格坐标 xx, yy 展平为点集(如绘图或空间计算)。
  • 数据预处理:合并多个特征列(如 np.c_[feature1, feature2])。
5. 调试建议

若结果不符合预期:

  1. 检查输入数组维度:确保通过 xx.ravel() 展平为一维。
  2. 验证长度一致性:len(xx.ravel()) == len(yy.ravel())
  3. 替代方案对比:
    # 等效于 np.c_[xx, yy]
    np.column_stack((xx.ravel(), yy.ravel()))
    np.hstack((xx.ravel()[:, None], yy.ravel()[:, None]))  # 显式转列向量
    

相关问题

  1. np.c_np.r_ 在拼接数组时有何本质区别?
  2. 当输入数组维度不同时(如一维和二维),np.c_ 如何处理?
  3. 如何用 np.concatenatenp.hstack 实现 np.c_ 的功能?

: 引用基于 NumPy 官方文档中数组操作指南。

http://www.dtcms.com/a/278208.html

相关文章:

  • Prometheus 第一篇:快速上手
  • 哪些行业的“反内卷”前景更好?
  • DL00454-深度学习牲畜资产管理圈养生猪行为识别含数据集
  • Docker搭建Redis哨兵集群
  • 代码部落 20250713 CSP-S复赛 模拟赛
  • Windows上使用配置Claude Code教程
  • 软件文档体系深度解析:工程视角下的文档架构与治理
  • 知识图谱构建简单分享
  • Task-driven Image Fusion with Learnable Fusion Loss
  • 嵌入式固件 .pkg 打包流程
  • DNS解析过程和nmap端口扫描
  • 大模型之Langchain篇(二)——RAG
  • C语言:流程控制
  • 前四天综合总结
  • 嵌入式 Linux开发环境构建之安装 SSH 软件
  • 【Lmdeploy】大模型本地化部署
  • 技术文章大纲:C++内存泄漏排查大赛
  • Node.js特训专栏-实战进阶:16. RBAC权限模型设计
  • 05.判断日期是工作日还是周末
  • 搭建个人Manus-JManus-00-集合介绍
  • OSPF实验(2)
  • 《夏重庆》——一场暴雨的立体诗篇(DeepSeek赏析)
  • 图形处理算法分类、应用场景及技术解析
  • 3d bounding box投影到2d
  • 12中kali自带的网络工具(开箱即用)
  • 一文打通MySQL任督二脉(事务、索引、锁、SQL优化、分库分表)
  • OSPF与BGP的联动特性实验案例
  • ConcurrentHashMap笔记
  • 从零开始学习深度学习—水果分类之PyQt5App
  • AutoDL挂载阿里云OSS