@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 |
看得出来,你在整合的时候是将两个表格(二维数组)在水平方向上堆叠在一起组合起来,拼接成一个新的表格(二维数组)。像这种行为称之为hstack
(horizontal stack
)。
NumPy
提供了实现hstack
功能的函数叫hstack
,hstack
的使用套路代码如下:
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 |
在这种情况下,你在整合的时候是将两个表格(二维数组)在竖直方向上堆叠在一起组合起来,拼接成一个新的表格(二维数组)。像这种行为称之为vstack
(vertical stack
)。
NumPy
提供了实现vstack
功能的函数叫vstack
,vstack
的使用套路代码如下:
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
:待hstack
的ndarray
;feature2
:待hstack
的ndarray
;- 返回值:类型为ndarray,其中值为hstack后每列的平均值;
- 具体要求请参见后续测试样例。
请先仔细阅读右侧上部代码编辑区内给出的代码框架,再开始你的编程工作!
测试说明
平台会对你编写的代码进行测试。你只需按要求完成函数即可。
测试用例输入是一个字典,feature1
部分代表函数中的feature1
,feature2
部分代表函数中的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 *********#