NumPy数组的高级操作(一)

本文介绍了Python的NumPy库中用于数组堆叠的`hstack`和`vstack`函数,分别用于水平和垂直方向上合并数组。通过实例展示了如何使用这两个函数来整合和组合二维数组,同时提出了一个编程要求,让读者应用所学知识完成计算hstack后每列平均值的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间煮雨
@R星校长

stack

stack的意思是堆叠的意思,所谓的堆叠就是将两个ndarray对象堆叠在一起组合成一个新的ndarray对象。根据堆叠的方向不同分为hstack以及vstack两种。

hstack

假如你是某公司的HR,需要记录公司员工的一些基本信息。可能你现在已经记录了如下信息:

工号 姓名 出生年月 联系电话
1 张三 1988.12 13323332333
2 李四 1987.2 15966666666
3 王五 1990.1 13777777777
4 周六 1996.4 13069699696

世界上没有不变的需求,你的老板让你现在记录一下公司所有员工的居住地址和户籍地址,此时你只好屁颠屁颠的记录这些附加信息。然后可能会有这样的结果:

居住地址 户籍地址
江苏省南京市禄口机场宿舍202 江西省南昌市红谷滩新区天月家园A座2201
江苏省南京市禄口机场宿舍203 湖南省株洲市天元区新天华府11栋303
江苏省南京市禄口机场宿舍204 四川省成都市武侯祠安置小区1栋701
江苏省南京市禄口机场宿舍205 浙江省杭州市西湖区兴天世家B座1204

接下来你需要把之前记录的信息和刚刚记录好的附加信息整合起来,变成酱紫:

工号 姓名 出生年月 联系电话 居住地址 户籍地址
1 张三 1988.12 13323332333 江苏省南京市禄口机场宿舍202 江西省南昌市红谷滩新区天月家园A座2201
2 李四 1987.2 15966666666 江苏省南京市禄口机场宿舍203 湖南省株洲市天元区新天华府11栋303
3 王五 1990.1 13777777777 江苏省南京市禄口机场宿舍204 四川省成都市武侯祠安置小区1栋701
4 周六 1996.4 13069699696 江苏省南京市禄口机场宿舍205 浙江省杭州市西湖区兴天世家B座1204

看得出来,你在整合的时候是将两个表格(二维数组)在水平方向上堆叠在一起组合起来,拼接成一个新的表格(二维数组)。像这种行为称之为hstackhorizontal stack)。

NumPy提供了实现hstack功能的函数叫hstackhstack的使用套路代码如下:

import numpy as np
a = np.array([[8, 8], [0, 0]]
章 绪论作业答案(共50分) 、分析如下程序中 (1)~ (10)各语句的频度。(每个1分,共10分) Ex( ) { int i , j , t ; (1) for( i=1 ; i<10 ; i++) //n = (2) printf(“\n %d” , i ); //n = (3) for(i=1; i<=2; i++) //n = (4) printf(“\n”); //n = (5) for(i=1; i<=9; i++) //n = { (6) for(j=1; j <= i ; j++) //n = { (7) t = i * j ; //n = (8) printf(“]”,t); //n = } (9) for(j=1; j 0) { if(x > 100) {x -= 10 ; y -- ;} else x ++ ; } 问if 语句执行了多少次?(2分) y--执行了多少次?(2分) x ++执行了多少次?(2分) 三、回答问题(共25分) 书中16页的起泡排序如下: void bubble_sort(int a[],int n){ //将a中整数序列重新排列成自小至大有序的整数序列。 for(i=n-1,change=TRUE;i>=1&&change;--i){ change=FALSE; for(j=0;ja[j+1]{a[j]<-->a[j+1];change=TRUE; } } }//bubble_sort 1.(共15分)分析该算法的最佳情况 ,最坏情况和平均情况下各自的时间复杂度(给出分析思路与过程)。 (1) 最佳情况的时间复杂度分析(5分): (2) 最坏情况的时间复杂度分析(5分): (3) 平均情况的时间复杂度分析(5分): 2.(共10分)比较与C语言书中的起泡排序异同,并从时空效率角度说明谁更优。 四、完成如下选择题(每3分,共9分)。 1. 设f为原操作,则如下算法的时间复杂度是( )。 for (i = 1; i*i=1;i--) for(j=1;jA[j+1]) A[j]与A[j+1]对换; 其中n为正整数,则算法在最坏情况下的时间复杂度为( )。 A.O(n) B.O(nlog2n) C. O(n3) D. O(n2)
### Numpy 数组高级操作教程 #### 花式索引与布尔索引 Numpy 提供了多种高级索引方式来访问和修改数组中的元素。其中,花式索引允许通过整数列表或数组进行索引来获取子集[^2]。而布尔索引则可以通过条件表达式的真值结果筛选出满足特定条件的元素。 以下是关于如何利用这些技术的个具体例子: ```python import numpy as np def filter_students(num, input_data): data_array = np.array(input_data) # 实例化入数据为 NumPy 数组 filtered_result = data_array[data_array > num] # 布尔索引应用:仅保留大于 `num` 的元素 return filtered_result.tolist() # 返回过滤后的结果作为标准 Python 列表 ``` 上述代码展示了如何使用布尔索引来提取原始数组中符合条件的部分。这里的关键在于 `data_array > num` 这语句会生成个布尔掩码,该掩码随后被用来选取原数组对应位置上的元素。 #### 文件存储与加载 除了内存中的高效操作外,NumPy 还支持便捷的数据持久化功能。可以借助 `np.save()` 和 `np.load()` 方法保存并恢复 ndarray 对象到磁盘上[^3]。这使得大型数据集能够轻松地在不同程序间共享或者长期储存起来备用。 例如下面这段简单的脚本演示了这过程: ```python # 创建测试用随机矩阵 test_matrix = np.random.rand(5, 5) # 存储至本地 .npy 文件 np.save('saved_test_matrix.npy', test_matrix) # 加载已保存的内容回到新的变量名下 loaded_matrix = np.load('saved_test_matrix.npy') print(np.allclose(test_matrix, loaded_matrix)) # 出 True 表明两者完全致 ``` #### 函数评估工具——linspace() 当需要在个范围内均匀采样大量点位时,`np.linspace(start, stop, num)` 是非常实用的选择之[^4]。此函数返回指定数量等间距分布于起始端点之间的样本集合,在绘制连续型数学曲线图等方面尤为常见。 示例片段如下所示: ```python from math import pi x_values = np.linspace(0, 2 * pi, 100) y_sine_wave = np.sin(x_values) ``` 以上就是有关 NumPy些较为复杂的特性介绍及其实际应用场景的例子说明
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值