App下載

Python數(shù)據(jù)科學:使用numpy求行均值

級高速公路ETC識別機攜帶者 2021-10-12 18:56:09 瀏覽數(shù) (5693)
反饋

隨著大數(shù)據(jù)時代的來臨,Python 應運而生,在這數(shù)據(jù)浪潮中逐漸發(fā)光發(fā)亮。越來越多的人開始學習Python,學習其中的數(shù)據(jù)科學、人工智能等等。今天,和大家分享關于 Python 數(shù)據(jù)科學中一個特別重要庫 numpy 庫中一道題目,分享一下關于對于這道題的解題思路。

題目:

隨機給定一個二維數(shù)組,結果返回行均值。

輸入要求:

第一行:兩個用空格隔開的整數(shù),第一個表示矩陣X(n)的行,第二個表示X(p)的列。

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

輸出要求:

一個 numpy 一維值數(shù)組,四舍五入到第二個小數(shù)。

輸入樣本:

2 2 
1.5 1 
2 2.9

輸出樣本:

[1.25 2.45]

解題思路:

最簡單也是最關鍵,最重要的一步,導入numpy庫。

import numpy as np

需要定義 numpy 數(shù)組的行列,因為要滿足題目要求的隨機性,所以這里就不寫死,使用 input 輸入。而且行列一定是整數(shù)類型的,數(shù)據(jù)類型必須是int 類型。但是輸入的值是字符串,這時候就需要對輸入的值進行轉換。

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

接下來,每行都會輸入 p 個值。我用了一個范圍為 n 的循環(huán),每行都能輸入 p 個值。此前還需要定義一個空數(shù)組,便于后面的數(shù)組進行累加。

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

接下來就是將數(shù)組轉換為 numpy 數(shù)組,并且給它重塑為二維數(shù)組。

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

最后就可以直接使用 numpy 的 mean 方法求均值即可,但題目要求是求行均值,這時候就需要設置axis=1,按列計算,獲得行均值。同時結果還需要保留小數(shù)點后兩位,就需要用上 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 庫練習題目的理解和解題過程。有興趣的讀者們也可以嘗試做一下,或許你們可以會有更好的解題思路和方法呢!


1 人點贊