np.c_ 和 np.r_ 的使用

1. np.c_ 的使用

  • np.c_ 是 NumPy 库中的一个函数,用于沿着第二轴()连接两个或多个数组。这个函数通常用于将两个数组的列合并在一起,而不会改变它们原有的行顺序。
  • np.c_ 是一个非常有用的工具,尤其是在处理需要按列合并数据的场景中。它使得数据操作更加灵活和高效。
  • 用于列合并的数组,行数要相等。

1.1 使用方法

np.c_ 的使用格式如下:

numpy.c_[array1, array2, ..., arrayN]

这里,array1, array2, …, arrayN 是要连接的数组。

(1)合并两个一维数组

import numpy as np# 定义两个一维数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 合并这两个数组
c = np.c_[a, b]
print(a.shape)
print(c)

在这里插入图片描述

  • 可以看到a和b对应的shape大小都是(3,1), 经过np.c_[a, b],将他们在列方向拼接在一起。
  • 得到输出的shape大小为(3,2)

(2) 合并两个二维数组

import numpy as np# 定义两个二维数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])# 合并这两个数组
c = np.c_[a, b]
print(c)
# 输出: [[1 2 5 6]
#        [3 4 7 8]]

(3) 合并多个数组

import numpy as np# 定义多个数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])# 合并这些数组
d = np.c_[a, b, c]
print(d)
# 输出: [[1 4 7]
#        [2 5 8]
#        [3 6 9]]

(4) 使用切片和索引

import numpy as np# 定义一个二维数组
a = np.array([[1, 2], [3, 4], [5, 6]])# 使用切片和索引合并数组
b = np.c_[a[0:2, :], a[1:, :]]
print(b)

在这里插入图片描述

1.2 案例

在bev项目中,经常需要给数据增加一个batch_id,此时就可以使用np.c_来实现,非常方便

import numpy as np
data= np.random.uniform(-1, 1, (5, 3))
print(data)
[[-0.45380672  0.29961225  0.60478025][ 0.07254224  0.53294663  0.4044583 ][-0.04580967 -0.0493629  -0.22611381][-0.0047154   0.04350007 -0.57873508][-0.05946754 -0.63166944  0.59860458]]
data_new= np.c_[np.array(data), np.ones(len(data))]

得到的输出如下:

array([[-0.45380672,  0.29961225,  0.60478025,  1.        ],[ 0.07254224,  0.53294663,  0.4044583 ,  1.        ],[-0.04580967, -0.0493629 , -0.22611381,  1.        ],[-0.0047154 ,  0.04350007, -0.57873508,  1.        ],[-0.05946754, -0.63166944,  0.59860458,  1.        ]])
data_new1= np.c_[np.array(data), np.full((len(data), 1),fill_value=2)]
array([[-0.45380672,  0.29961225,  0.60478025,  2.        ],[ 0.07254224,  0.53294663,  0.4044583 ,  2.        ],[-0.04580967, -0.0493629 , -0.22611381,  2.        ],[-0.0047154 ,  0.04350007, -0.57873508,  2.        ],[-0.05946754, -0.63166944,  0.59860458,  2.        ]])

2. np.r_ 的使用

np.r_ 是 NumPy 库中的一个方便的索引工具,用于沿着第一个轴(行)连接数组。它常用于将多个数组或数组片段合并成一个更大的数组。np.r_ 可以处理一维或多维数组,并且可以一次性处理多个数组。

2.1 使用方法

np.r_ 的使用格式如下:

numpy.r_[array1, array2, ..., arrayN]

这里,array1, array2, …, arrayN 是要连接的数组。

2.2 案例

(1) 连接一维数组

import numpy as np# 定义两个一维数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 使用 np.r_ 连接这两个数组
c = np.r_[a, b]
print(c)
# 输出: [1 2 3 4 5 6]
  • a和b的shape都是大小为(3,1),通过np.r_在行方向进行拼接得到shape大小为(6,1)

(2) 连接二维数组

import numpy as np# 定义两个二维数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])# 使用 np.r_ 连接这两个数组
c = np.r_[a, b]
print(c)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]

np.r_ 是一个非常灵活的工具,可以用于各种数组合并的场景。它特别适合于在数组操作和数据处理中快速组合数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416181.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Draw.io for Mac/Win:免费且强大的流程图绘制工具

在数字化时代,流程图已成为表达复杂过程和逻辑关系的重要工具。Draw.io(现也称为diagrams.net),作为一款免费且功能强大的流程图绘制工具,无论是对于Mac还是Windows用户,都是不可多得的选择。 一、跨平台兼…

基于51单片机的跑马串口调试波形发生器proteus仿真

地址: https://pan.baidu.com/s/1WTjU_hRJ-fLMTT5g1q-NlA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectro…

python中.之后的圈c、圈v分别代表什么意思?

python中.之后的圈c、圈v分别代表什么意思? Python中,.之后的圈c表示类的实例方法,而圈v表示类的成员变量。 在面向对象编程中,类是一种抽象的数据类型,实例方法是定义在类中的函数,用于操作类的实例变量…

kubeadm方式安装k8s

⼀、安装环境 1. 安装说明 本次以⼆进制⽅式安装⾼可⽤ k8s 1.28.0 版本,但在⽣产环境中,建议使⽤⼩版本⼤于 5 的 Kubernetes 版本,⽐如 1.19.5 以后。 2. 系统环境 3. ⽹络及版本环境 注:宿主机⽹段、Pod ⽹段、Service ⽹段…

Python案例 | 四阶龙格库塔法简介

1.引言 在数值分析中,龙格-库塔法(Runge-Kutta methods)是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家卡尔龙格和马丁威尔海姆库塔于1900年左右发明。 龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高…

59.以太网数据回环实验(2)硬件资源梳理及系统框图

硬件资源梳理介绍: 升腾开发板使用的以太网PHY芯片型号为RTL8211F,是低功耗10-BASE/100-BASE/1000-BASE全双工以太网PHY层芯片,支持 10Mbps、100Mbps 和 1000Mbps以太网通信。I/O 引脚电压可变,符合 IEEE802.3-2005 标准&#xff…

Web3社交新经济,与 SOEX 实现无缝交易的高级安全性

出于充分的理由,安全性是交易中至关重要的考虑因素。每个人都应该确保自己的资金在交易时是安全的。由于 SOEX 充当您与交易所的最佳连接,因此必须强调的是,该系统不会引发任何安全问题。 &a…

wincc 远程和PLC通讯方案

有 5个污水厂 的数据需要集中监控到1个组态软件上,软件是WINCC。每个污水厂监控系统都是独立的,已经投入运行了, 分站也是WINCC 和西门子PLC 。采用巨控远程模块的话,有两种方式:一种是从现场的PLC取数据,一种是从分站…

@DateTimeFormat和@JsonFormat的区别和使用场景

一、区别 DateTimeFormat 用于前端给后端传参时 JsonFormat 用于后端给前端返回时 二、使用场景 2、1 JsonFormat的场景 1、**(错误写法) **如果参数是实体类,不可以使用DateTimeFormat,这种写法前端传参序列化会报错&#xf…

设计模式-结构型模式-组合模式

1.组合模式的定义 将对象组合成树形结构以表示整个部分的层次结构,组合模式可以让用户统一对待单个对象和对象的组合;其更像是一种数据结构和算法的抽象,其中数据可以表示成树这种数据结构,业务需求可以通过在树上的递归遍历算法来…

论文速读|BiGym:一款基于演示的移动双手操作机器人基准

项目地址:BiGym: A Demo-Driven Mobile Bi-Manual Manipulation Benchmark BiGym 是一个针对移动双手操作的机器人学习基准,包含 40 个在家庭环境中进行的任务,如简单的目标接近到复杂的厨房清洁。这些任务涵盖了从固定的目标接近到需要与各种…

儿童耳勺需要买吗?真实测评赞誉有加的五大品牌

作为个护师,经常会碰到有家长问我需不需要买儿童耳勺,我每次的回答都必须是要的。因为传统耳勺由于不可视的原因,家长无法看清儿童狭窄的耳道,极容易刮伤儿童耳道。但是需要买哪种儿童耳勺? 这里可以跟大家分享一款神器…

vue项目生成插件的LICENSE文件

一、安装license-webpack-plugin npm install --save-dev license-webpack-plugin 二、添加webpack配置 const {LicenseWebpackPlugin} require(license-webpack-plugin)module.exports {configureWebpack: {plugins: [new LicenseWebpackPlugin()]} }三、执行npm run buil…

sM4040B科学级显微制冷相机特性

sM4040B科学级显微制冷相机特性 sM4040B搭载了 GSENSE4040BSI 3.2 英寸图像传感器,针对传感器固有的热噪声,专门设计了高效制冷模块,使得相机传感器的工作温度比环境温度低达 35-40 度。针对制冷相机常见的低温结雾现象设计了防结雾机制&…

计算机岗位(面试)

计算机岗位(面试) 明确从事工作内容: 计算机网络、设备、器材维护与管理等工作;计算机应用、数据分析、网络维护等工作;软件开发、网络维护与管理相关专业;信息保障、信息资源维护和建设;软件工…

推荐适合中秋的SVG模版(第III期)

宝藏模版 往期推荐(点击阅读): 趣味效果|高大上|可爱风|年终总结I|年终总结II|循环特效|情人节I|情人节II|妇女节|儿童节I&#xff…

如何用 Typed.js 制作炫酷的打字效果?

前言 在前端开发的世界中,动态和交互性是用户体验的关键。 Typed.js 是一个轻量级的 JavaScript 库,它能够以编程方式模拟打字效果,为网页增添动态的文本展示。 这篇文章将带你深入了解 Typed.js 的魔力,探索它如何为前端开发带…

【Linux网络】应用层协议HTTP(1)

🎉博主首页: 有趣的中国人 🎉专栏首页: Linux网络 🎉其它专栏: C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 应用层协议HTTP 的相关内容。 如果看到最后您觉得这篇文章写得…

Mybatis链路分析:JDK动态代理和责任链模式的应用

背景 此前写过关于代理模式的文章,参考:代理模式 动态代理功能:生成一个Proxy代理类,Proxy代理类实现了业务接口,而通过调用Proxy代理类实现的业务接口,实际上会触发代理类的invoke增强处理方法。 责任链功…

算法笔试-编程练习-好题-03

这是一道非常综合的质数类的题目,值得仔细理解。 题目描述 n个正整数ai,希望你求出这些数的阶乘全部乘在一起生成的大数有多少个因子 输入描述 第一行输入一个正整数n。 第二行输入n个正整数ai​,用空格隔开 1≤n≤2 1≤ai≤ 输出描述 一个…