NumPy数组的高级操作(一)

时间煮雨
@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]])
b = np.array([[1, 8], [0, 4]])
'''
将a和b按元组中的顺序横向拼接
结果为:[[8, 8, 1, 8], 
        [0, 0, 0, 4]]
'''
print(np.hstack((a,b)))
c = np.array([[1, 2], [3, 4]])
'''
将a,b,c按元组中的顺序横向拼接
结果为:[[8, 8, 1, 8, 1, 2], 
        [0, 0, 0, 4, 3, 4]]
'''
print(np.hstack((a,b,c)))

vstack

你还是某公司的HR,你记录了公司员工的一些信息,如下:

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

今天有两位新同事入职,你需要记录他们的信息,如下:

工号 姓名 出生年月 联系电话
5 刘七 1986.5 13323332331
6 胡八 1997.3 15966696669

然后你需要将新入职同事的信息和已经入职的员工信息整合在一起。

工号 姓名 出生年月 联系电话
1 张三 1988.12 13323332333
2 李四 1987.2 15966666666
3 王五 1990.1 13777777777
4 周六 1996.4 13069699696
5 刘七 1986.5 13323332331
6 胡八 1997.3 15966696669

在这种情况下,你在整合的时候是将两个表格(二维数组)在竖直方向上堆叠在一起组合起来,拼接成一个新的表格(二维数组)。像这种行为称之为vstackvertical stack)。

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

import numpy as np
a = np.array([[8, 8], [0, 0]])
b = np.array([[1, 8], [0, 4]])
'''
将a和b按元组中的顺序纵向拼接
结果为:[[8, 8]
        [0, 0]
        [1, 8]
        [0, 4]]
'''
print(np.vstack((a,b)))
c = np.array([[1, 2], [3, 4]])
'''
将a,b,c按元组中的顺序纵向拼接
结果为:[[8 8]
        [0 0]
        [1 8]
        [0 4]
        [1 2]
        [3 4]]
'''
print(np.vstack((a,b,c)))

编程要求

根据本关所学知识,补充完成get_mean(featur1, feature2)函数,其中:

  • feature1:待hstackndarray
  • feature2:待hstackndarray
  • 返回值:类型为ndarray,其中值为hstack后每列的平均值;
  • 具体要求请参见后续测试样例。

请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!

测试说明

平台会对你编写的代码进行测试。你只需按要求完成函数即可。

测试用例输入是一个字典,feature1部分代表函数中的feature1feature2部分代表函数中的feature2

测试输入:

{
    
    'feature1':[[1, 2, 3, 4], [4, 3, 2, 1], [2, 3, 4, 5]], 'feature2':[[1], [2], [3]]}

预期输出:

[2.33333333 2.66666667 3.         3.33333333 2.        ]

开始你的任务吧,祝你成功!

import numpy as np


def get_mean(feature1, feature2):
    '''
    将feature1和feature2横向拼接,然后统计拼接后的ndarray中每列的均值
    :param feature1:待`hstack`的`ndarray`
    :param feature2:待`hstack`的`ndarray`
    :return:类型为`ndarray`,其中的值`hstack`后每列的均值
    '''
    #********* Begin *********#
    
    feature3 = np.hstack((feature1,feature2))
    return feature3.mean(axis=0)
    
    #********* End *********#

参考文档
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44745905/article/details/111084178
今日推荐