App下載

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

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

隨著大數(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(mǎn)足題目要求的隨機(jī)性,所以這里就不寫(xiě)死,使用 input 輸入。而且行列一定是整數(shù)類(lèi)型的,數(shù)據(jù)類(lèi)型必須是int 類(lèi)型。但是輸入的值是字符串,這時(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ì)有更好的解題思路和方法呢!


1 人點(diǎn)贊