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 库练习题目的理解和解题过程。有兴趣的读者们也可以尝试做一下,或许你们可以会有更好的解题思路和方法呢!