隨著大數(shù)據(jù)時(shí)代的來(lái)臨,Python 應(yīng)運(yùn)而生,在這數(shù)據(jù)浪潮中逐漸發(fā)光發(fā)亮。越來(lái)越多的人開(kāi)始學(xué)習(xí)Python,學(xué)習(xí)其中的數(shù)據(jù)科學(xué)、人工智能等等。今天,和大家分享關(guān)于 Python 數(shù)據(jù)科學(xué)中一個(gè)特別重要庫(kù) numpy 庫(kù)中一道題目,分享一下關(guān)于對(duì)于這道題的解題思路。
題目:
隨機(jī)給定一個(gè)二維數(shù)組,結(jié)果返回行均值。
輸入要求:
第一行:兩個(gè)用空格隔開(kāi)的整數(shù),第一個(gè)表示矩陣X(n)的行,第二個(gè)表示X(p)的列。
接下來(lái)的 n 行:X 中行的值。
輸出要求:
一個(gè) numpy 一維值數(shù)組,四舍五入到第二個(gè)小數(shù)。
輸入樣本:
2 2
1.5 1
2 2.9
輸出樣本:
[1.25 2.45]
解題思路:
最簡(jiǎn)單也是最關(guān)鍵,最重要的一步,導(dǎo)入numpy庫(kù)。
import numpy as np
需要定義 numpy 數(shù)組的行列,因?yàn)橐獫M足題目要求的隨機(jī)性,所以這里就不寫死,使用 input 輸入。而且行列一定是整數(shù)類型的,數(shù)據(jù)類型必須是int 類型。但是輸入的值是字符串,這時(shí)候就需要對(duì)輸入的值進(jìn)行轉(zhuǎn)換。
n, p = [int(x) for x in input().split()]
接下來(lái),每行都會(huì)輸入 p 個(gè)值。我用了一個(gè)范圍為 n 的循環(huán),每行都能輸入 p 個(gè)值。此前還需要定義一個(gè)空數(shù)組,便于后面的數(shù)組進(jìn)行累加。
arr = []
for i in range(n):
arr += [float(x) for x in input().split()]
接下來(lái)就是將數(shù)組轉(zhuǎn)換為 numpy 數(shù)組,并且給它重塑為二維數(shù)組。
arr = np.array(arr).reshape(n, p)
最后就可以直接使用 numpy 的 mean 方法求均值即可,但題目要求是求行均值,這時(shí)候就需要設(shè)置axis=1,按列計(jì)算,獲得行均值。同時(shí)結(jié)果還需要保留小數(shù)點(diǎn)后兩位,就需要用上 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))
結(jié)果輸出:
總結(jié):
以上就是我關(guān)于這道 numpy 庫(kù)練習(xí)題目的理解和解題過(guò)程。有興趣的讀者們也可以嘗試做一下,或許你們可以會(huì)有更好的解題思路和方法呢!