Python数据科学:使用numpy求行均值

2021-10-12 18:56:09 浏览数 (5564)

随着大数据时代的来临,Python 应运而生,在这数据浪潮中逐渐发光发亮。越来越多的人开始学习Python,学习其中的数据科学、人工智能等等。今天,和大家分享关于 Python 数据科学中一个特别重要库 numpy 库中一道题目,分享一下关于对于这道题的解题思路。

题目:

随机给定一个二维数组,结果返回行均值。

输入要求:

第一行:两个用空格隔开的整数,第一个表示矩阵X(n)的行,第二个表示X(p)的列。

接下来的 n 行:X 中行的值。

输出要求:

一个 numpy 一维值数组,四舍五入到第二个小数。

输入样本:

2 2 
1.5 1 
2 2.9

输出样本:

[1.25 2.45]

解题思路:

最简单也是最关键,最重要的一步,导入numpy库。

import numpy as np

需要定义 numpy 数组的行列,因为要满足题目要求的随机性,所以这里就不写死,使用 input 输入。而且行列一定是整数类型的,数据类型必须是int 类型。但是输入的值是字符串,这时候就需要对输入的值进行转换。

n, p = [int(x) for x in input().split()]

接下来,每行都会输入 p 个值。我用了一个范围为 n 的循环,每行都能输入 p 个值。此前还需要定义一个空数组,便于后面的数组进行累加。

arr = []
for i in range(n):
    arr += [float(x) for x in input().split()]

接下来就是将数组转换为 numpy 数组,并且给它重塑为二维数组。

arr = np.array(arr).reshape(n, p)

最后就可以直接使用 numpy 的 mean 方法求均值即可,但题目要求是求行均值,这时候就需要设置axis=1,按列计算,获得行均值。同时结果还需要保留小数点后两位,就需要用上 round 方法。

arr.mean(axis=1).round(2)

完整代码:

import numpy as np

n, p = [int(x) for x in input().split()]

arr = []
for i in range(n):
    arr += [float(x) for x in input().split()]

arr = np.array(arr).reshape(n, p)
print(arr.mean(axis=1).round(2))

结果输出:


总结:

以上就是我关于这道 numpy 库练习题目的理解和解题过程。有兴趣的读者们也可以尝试做一下,或许你们可以会有更好的解题思路和方法呢!