Python_Numpy教程_2

这篇教程涵盖了Python Numpy的基本运算,包括通用函数ufunc、形状操作如索引、切片和迭代,以及如何使用stack组合数组和split进行数组分割。
基本运算
import numpy as np

a = np.array([20,30,40,50])

b = np.arange(4)

c = a - b  #减法
d = b**2   #平方
e = 10 *np.sin(a)
print(a<35)

A = np.array([[1,1],[0,1]])
B = np.array([[2,0],[3,4]])
C = A*B  #元素相乘
E = np.dot(A,B)  #矩阵相乘
print(C)
print(E)

import numpy as np

a = np.ones((2,3),dtype = int)
b = np.random.random((2,3))
print(a)
print(b)
b += a
print(b)
#a += b   #error
       # Cannot cast ufunc add output from dtype('float64') to dtype('int32') with casting rule 'same_kind'
print(a)

print(a.sum())
print(a.min())
print(a.max())

c = np.arange(12).reshape(3,4)
print(c)

d = c.sum(axis=0)  #sum of each column
print(d)
e = c.min(axis=1) # min of each row
print(e)
f = c.cumsum(axis=1)  #cumulative sum along each row
print(f)

输出

[[1 1 1]
 [1 1 1]]
[[ 0.33554238  0.2963108   0.91907985]
 [ 0.86329755  0.21385802  0.98444173]]
[[ 1.33554238  1.2963108   1.91907985]
 [ 1.86329755  1.21385802  1.98444173]]
[[1 1 1]
 [1 1 1]]
6
1
1
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[12 15 18 21]
[0 4 8]
[[ 0  1  3  6]
 [ 4  9 15 22]
 [ 8 17 27 38]]
通用函数ufunc
import numpy as np

B = np.arange(3)
print(B)
print(np.exp(B)) 
print(np.sqrt(B))
C = np.array([2,1,3])
print(np.add(B,C))

索引、切片和迭代

a = np.arange(10)**3
print(a)
print(a[2])
print(a[2:5])
a[:6:2] = -1000
print(a)
print(a[: :-1])

def f(x,y):
    return 10*x+y

b = np.fromfunction(f,(5,4),dtype= int)
print(b)
print(b[2,3])
print(b[0:5,1])
print(b[:,1])
print(b[1:3,:])
print(b[-1])
形状操作
import numpy as np

#floor 计算各元素的floor值,即小于等于该值的最大正数
a = np.floor(10*np.random.random((3,4)))
print(a)
print(a.shape)
# ravel flatten实现功能是一致的,将多维数组将为一维
#两者的区别在于ravel返回视图,会影响原始矩阵
#flatten 返回一份拷贝,对拷贝修改不影响原始矩阵
print(a.ravel())
print(a.flatten())
print(a.transpose())

#reshape 函数改变参数形状并返回它
#resize 函数改变数组自身
b = np.array([[7,5],[9,3],[7,2],[7,8],[6,8],[3,2]])
print(b)
print(b.reshape(3,4))
b.resize((3,2))
print(b)

stack组合不同的数组

import numpy as np

a = np.array([1,2,3])
print(a) 
b = np.array([4,5,6])
print(b)
c = np.vstack((a,b))
print(c)
d = np.hstack((a,b))
print(d)
e = np.column_stack((a,b))
print(e)

输出

[1 2 3]
[4 5 6]
[[1 2 3]
 [4 5 6]]
[1 2 3 4 5 6]
[[1 4]
 [2 5]
 [3 6]]

将数组分割split成几个小数组

f = np.array([1,2,3,4,5,6,7,8,9,10,11,12]).reshape(2,6)
print(f)
print(np.hsplit(f,3))   #沿水平方向
print(np.vsplit(f,2))   #沿垂直方向



### 关于ROS 2NumPy的相关资源 #### ROS 2中的Python支持与NumPy集成 在ROS 2环境中,`rclpy`作为官方推荐的用于编写ROS节点的Python客户端库提供了对Python的强大支持。由于NumPyPython中处理数组的核心库之一,在涉及传感器数据处理、图像处理等领域时经常被使用。 对于希望利用NumPy功能开发ROS 2应用的开发者来说,可以直接安装标准版NumPy并将其导入到基于`rclpy`构建的应用程序中[^1]。需要注意的是,虽然ROS 2本身并不直接提供特定版本的NumPy捆绑包,但在大多数情况下,通过pip或系统包管理器安装最新稳定版即可满足需求。 ```bash pip install numpy ``` #### 工具与教程建议 针对想要深入了解如何结合ROS 2NumPy进行高效编程的学习者而言,有以下几个方向可以探索: - **官方文档**:ROS 2官方网站拥有丰富的指南文章和技术手册,其中涵盖了大量关于创建自定义消息类型以及序列化机制的内容,这对于理解怎样有效地传输复杂的数据结构(比如由NumPy生成的大规模矩阵)至关重要。 - **社区贡献项目**:GitHub上存在许多开源项目致力于简化科学计算框架同机器人操作系统之间的交互过程。例如,“ros_numpy”就是一个旨在促进二者间无缝衔接的例子;它允许用户轻松地将ROS的消息转换成NumPy数组形式以便后续分析操作[^2]。 - **在线课程平台**:像Coursera、Udemy这样的教育网站也开设了不少专门面向ROS学习者的专项系列课件,部分课程会特别强调计算机视觉、机器学习算法实现等方面的知识传授,而这些领域正是NumPy大显身手之处。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值