隨著大數(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 庫練習題目的理解和解題過程。有興趣的讀者們也可以嘗試做一下,或許你們可以會有更好的解題思路和方法呢!