numpy的数组嵌套操作

numpy的ndarray[ndarray] 嵌套操作

直接demo

在这里插入图片描述

看下面示意图,红线代表a[b]中的数据元素来自a中的相应位置,这个位置是由b数组中的元素来指出

在这里插入图片描述

总结: a[b] 生成一个numpy的数组c,c的shape=(b.shape[0],b.shape[1],a.shape[1])。c的中的数据元素都是由a的数据元素组成,至于是a中那个位置的数据元素,则是由b中的数值指出,即b是a的索引

### NumPy 数组操作概述 NumPy 是 Python 中用于处理数值数据的强大库,其核心对象是同质多维数组 `ndarray`。该库支持大量的维度数组与矩阵运算,以及针对这些运算的专用函数。 #### 创建 NumPy 数组 通过 `numpy.array()` 函数可以轻松地将 Python 列表或其他序列类型的对象转换成 NumPy 数组[^2]: ```python import numpy as np # 从列表创建一维数组 arr1 = np.array([1, 2, 3, 4, 5]) print("一维数组:", arr1) # 从嵌套列表创建二维数组 arr2 = np.array([[1, 2, 3], [4, 5, 6]]) print("二维数组:\n", arr2) ``` #### 基本数学运算 对于 NumPy 数组而言,基本算术运算是按元素逐个进行的,并且既可通过操作符也可调用相应的方法来实现[^1]: ```python a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) addition_result = a + b # 加法 subtraction_result = a - b # 减法 multiplication_result = a * b # 乘法 division_result = a / b # 除法 print(addition_result) # 输出: [5 7 9] print(subtraction_result) # 输出: [-3 -3 -3] print(multiplication_result) # 输出: [ 4 10 18] print(division_result) # 输出: [0.25 0.4 0.5 ] ``` #### 广播机制 当两个形状不同的数组相加时,较小的数组会沿着较大的那个方向扩展直到两者匹配;这一过程称为广播[^3]: ```python c = np.ones((3, 3)) # 形状为 (3, 3) 的全 '1' 矩阵 d = np.arange(3) # 形状为 (3,) 的向量 [0, 1, 2] broadcasted_sum = c + d print(broadcasted_sum) """ 输出: [[1. 2. 3.] [1. 2. 3.] [1. 2. 3.]] """ ``` #### 数组属性变换 除了简单的算术运算外,还可以改变现有数组的形式而不影响原始数据,比如转置、重塑等: ```python matrix = np.array([[1, 2], [3, 4]]) transposed_matrix = matrix.T # 转置矩阵 reshaped_array = matrix.reshape(-1) # 将矩阵展平为一维向量 print(transposed_matrix) # 输出 [[1 3][2 4]] print(reshaped_array) # 输出 [1 2 3 4] ``` #### 组合与分割数组 多个数组之间可以通过水平堆叠 (`hstack`) 或垂直堆叠 (`vstack`) 来组合在一起;相反地,也可以利用切片语法对单个大数组做分隔处理: ```python horizontal_stack = np.hstack((np.zeros((2, 2)), np.ones((2, 2)))) vertical_split_parts = np.vsplit(np.eye(4), 2) print(horizontal_stack) """ 输出: [[0. 0. 1. 1.] [0. 0. 1. 1.]] """ for part in vertical_split_parts: print(part) """ 输出: [[1. 0. 0. 0.] [0. 1. 0. 0.]] [[0. 0. 1. 0.] [0. 0. 0. 1.]] """ ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值