1. 程式人生 > >python numpy庫詳解

python numpy庫詳解

陣列的統計函式:

>>>#sum(a,axis=None):計算和
>>>#mean(a,axis=None):計算平均值
>>>#average(a,axis=None,weights=None):加權平均數
>>>#std(a,axis=None):標準差
>>>#var(a,axis=None):方差
>>> a=np.arange(12).reshape(3,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> np.sum(a)
66
>>> np.sum(a,axis=1)
array([ 6, 22, 38])
>>> np.mean(a)
5.5
>>> np.average(a,axis=0,weights=[1,2,3])
array([ 5.33333333,  6.33333333,  7.33333333,  8.33333333])
>>> np.std(a)
3.4520525295346629
>>> np.std(a)
3.4520525295346629
>>>#------------------------------------------------------------
>>>#min(a),max(a),最小值,最大值
>>>#argmin(a),argmax(a),最小值,最大值平鋪成一維的下標
>>>#unravel_index(index,shape)根據index轉換成多維下標
>>>#ptp(a)最大值和最小值之差
>>>#median(a)中位數
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> np.max(a)
11
>>> np.argmax(a)
11
>>> np.unravel_index(np.argmax(a),a.shape)
(2, 3)
>>> np.median(a)
5.5
>>> np.ptp(a)
11


陣列的遍歷:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

#陣列元素迭代器
a=np.array([[1,2,3],[4,5,6]])
for item in a.flat:
    print(item,end='')
#輸出:123456

#遍歷陣列的每一行
for row in a:
    print(row)
#輸出:[1 2 3]
#      [4 5 6]

#遍歷陣列的每一列,a.T將矩陣轉置
for col in a.T:
    print(col)
#輸出:[1 4]
#      [2 5]
#      [3,6]

數組合並

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

a=np.array([1,1,1])
b=np.array([2,2,2])
print(a.shape)
#給陣列a增加一個行維度
print(np.shape(a[np.newaxis,:]))
print(np.shape(a[:np.newaxis]))
print(a)
print(a[np.newaxis,:])
print(a[:,np.newaxis])
#輸出:(3,)
#(1, 3)
#(3,)
#[1 1 1]
#[[1 1 1]]
#[[1]
#[1]
#[1]]

#矩陣合併法一:
#verital stack,上下合併
c=np.vstack((a,b))
print(c)
#horizontal stack,左右合併
d=np.hstack((a,b))
print(d)
#輸出:[[1 1 1]
#[2 2 2]]
#[1 1 1 2 2 2]


#矩陣合併法2:
A=np.array([1,1,1])[:,np.newaxis]
B=np.array([2,2,2])[:,np.newaxis]
#按照行合併
C=np.concatenate((A,B),axis=0)
print(C)
#輸出:
#[[1]
#[1]
#[1]
#[2]
#[2]
#[2]]
#按照列合併
D=np.concatenate((A,B),axis=1)
print(D)
#輸出:
#[[1 2]
# [1 2]
# [1 2]]

陣列分割

import numpy as np

a=np.array([[1,2,3],[4,5,6],[7,8,9]])

#進行相等的分割,分別為橫向分割和縱向分割
print(np.split(a,3,axis=0))
print(np.split(a,3,axis=1))
#輸出:
#[array([[1, 2, 3]]), array([[4, 5, 6]]), array([[7, 8, 9]])]
#[array([[1],
#       [4],
#       [7]]), array([[2],
#       [5],
#       [8]]), array([[3],
#       [6],
#       [9]])]


#不相等的分割
print(np.array_split(a,2))
#輸出:
#[array([[1, 2, 3],
#       [4, 5, 6]]), array([[7, 8, 9]])]


#相等的分割
print(np.vsplit(a,3))
print(np.hsplit(a,3))
#輸出:
#[array([[1, 2, 3]]), array([[4, 5, 6]]), array([[7, 8, 9]])]
#[array([[1],
#       [4],
#       [7]]), array([[2],
#       [5],
#       [8]]), array([[3],
#       [6],
#       [9]])]

numpy的隨機數函式

>>>#生成在[0,1)均勻分佈的浮點數
>>> np.random.rand(3,4)
array([[ 0.44374911,  0.60026154,  0.82517151,  0.40989027],
       [ 0.05557479,  0.59598147,  0.33718659,  0.46382554],
       [ 0.45341894,  0.89121353,  0.19335915,  0.75323229]])
>>>#標準正態分佈的樣本值
>>> np.random.randn(3,4)
array([[ 1.20569484,  0.59492977, -0.29785485, -0.18304835],
       [-0.96979811, -0.55250456, -0.21085342, -0.1876273 ],
       [ 1.05674833, -0.10866197,  0.77556511,  1.27915748]])
>>>#隨機生成確定上下限的樣本值,[low,high]
>>> np.random.randint(100,200,(3,4))
array([[168, 191, 121, 136],
       [169, 112, 186, 118],
       [109, 176, 194, 178]])
>>>#-------------------------------------------------------------------
>>>#使用相同的隨機數種子,可使得產生的隨機數相同
>>> np.random.seed(1)
>>> np.random.rand(1,3)
array([[  4.17022005e-01,   7.20324493e-01,   1.14374817e-04]])
>>> np.random.rand(1,3)
array([[ 0.30233257,  0.14675589,  0.09233859]])
>>> np.random.seed(1)
>>> np.random.rand(1,3)
array([[  4.17022005e-01,   7.20324493e-01,   1.14374817e-04]])
>>>#-------------------------------------------------------------------
>>>#在陣列的列內隨機排列,改變陣列
>>> a=np.random.randint(100,200,(3,4))
>>> a
array([[175, 105, 179, 164],
       [116, 101, 176, 171],
       [106, 125, 150, 120]])
>>> np.random.shuffle(a)
>>> a
array([[175, 105, 179, 164],
       [106, 125, 150, 120],
       [116, 101, 176, 171]])
>>>#在陣列的列內隨機排列,不改變陣列
>>> np.random.permutation(a)
array([[116, 101, 176, 171],
       [106, 125, 150, 120],
       [175, 105, 179, 164]])
>>> a
array([[175, 105, 179, 164],
       [106, 125, 150, 120],
       [116, 101, 176, 171]])
>>>#從一維陣列中以概率p抽取元素,形成size形狀新陣列,replace表示是否可以重用元素,預設為False
>>> b=np.random.randint(1,10,(6,))
>>> b
array([3, 5, 8, 8, 2, 8])
>>>#越大的數,被選取的概率越大
>>> np.random.choice(b,(2,1),p=b/np.sum(b),replace=True)
array([[8],
       [8]])
>>>#------------------------------------------------------------------
>>>#uniform(low,high,size):產生具有均勻分佈的陣列[low,high]
>>> np.random.uniform(0,10,(3,4))
array([[ 7.15970516,  8.02757504,  0.92800809,  5.18152549],
       [ 8.65020252,  8.29146907,  8.29603359,  2.73049974],
       [ 0.59243201,  6.7052804 ,  5.93065518,  6.71654097]])
>>>#normal(loc,scale,size):產生具有正態分佈的陣列,loc均值,scale標準差
>>> np.random.normal(10,5,(3,4))
array([[  3.4756938 ,   8.09712482,   6.28186495,   7.81439113],
       [  7.86774954,  16.90703652,  10.49185256,   8.15271258],
       [  3.63390025,  15.07493401,   2.59470145,   8.56450053]])
>>>#poisson(lam,size):產生具有泊松分佈的陣列,lam隨機事件發生率,size形狀

numpy陣列的輸出顯示設定
 

# 在輸出array時,會發現中間部分有省略號,不能全部的展示array的元素,此時可以進行設定展示全部元素
np.set_printoptions(threshold=np.nan)
# 讓輸出的小數只保留2位小數顯示
np.set_printoptions(precision=2)

相關推薦

python numpy

陣列的統計函式: >>>#sum(a,axis=None):計算和 >>>#mean(a,axis=None):計算平均值 >>>#average(a,axis=None,weights=None):加權平均數

Python--urllib3

Python--urllib3庫詳解      Urllib3是一個功能強大,條理清晰,用於HTTP客戶端的Python庫,許多Python的原生系統已經開始使用urllib3。Urllib3提供了很多python標準庫裡所沒有的重要特性:             

python BeautifulSoup

BeautifulSoup Beautiful Soup 是一個可以從HTML或XML檔案中提取資料的Python庫.它能夠通過你喜歡的轉換器實現慣用的文件導航,查詢,修改文件的方式 官方文件連結,相同效果的庫還有pyquery模組,詳見此 解析器 對網頁進行析取時,若未規定解析器,此時使用

Python標準——turtle、random、time

目錄 前言 2. 畫筆 前言 公眾號要發一個python標準庫介紹,我先記錄到本部落格中,後面再過渡過去。這三個標準庫是今年計算機python二級大綱中提到的3個標準庫,不難但是是比較基礎但庫,也需要掌握。 一

Python optparser

一直以來對optparser不是特別的理解,今天就狠下心,靜下心研究了一下這個庫。當然了,不敢說理解的很到位,但是足以應付正常的使用了。廢話不多說,開始今天的分享吧。 簡介 optparse模組主要用來為指令碼傳遞命令引數功能. 引入 在

python爬蟲學習筆記二:Requests及HTTP協議

Requests庫的安裝:https://mp.csdn.net/postedit/83715574 r=requests.get(url,params=None,**kwargs) 這個r是Response物件 url :擬獲取頁面的url連結 params:url中的額外引數

Python爬蟲系列-Urllib

Urllib庫詳解 Python內建的Http請求庫: * urllib.request 請求模組 * urllib.error 異常處理模組 * urllib.parse url解析模組 * urllib.robotparser robots.txt解析模組 #### 相比在python2基礎上的變化

Python爬蟲系列-Requests

Requests基於urllib,比urllib更加方便,可以節約我們大量的工作,完全滿足HTTP測試需求。 例項引入 import requests response = requests.get('https://www.baidu.com/') print(type(response))

python爬蟲urllib

什麼是Urllib Urllib是python內建的HTTP請求庫,中文文件如下:https://docs.python.org/3/library/urllib.html包括以下模組urllib.request 請求模組urllib.error 異常處理模組urllib.parse url解析模組urll

python爬蟲pyquery

PyQuery庫也是一個非常強大又靈活的網頁解析庫,如果你有前端開發經驗的,都應該接觸過jQuery,那麼PyQuery就是你非常絕佳的選擇,PyQuery 是 Python 仿照 jQuery 的嚴格實現。語法與 jQuery 幾乎完全相同,所以不用再去費心去記一些奇怪的方法了。 官網地址:http://

python time和datetime

import time import datetime ''' 重點是元祖、時間戳、格式化的字串之間互相轉化 元祖轉時間戳:使用time.mktime(元祖) 元祖轉格式化的字串:使用time.strftime(元祖) 時間戳轉元祖: 思路,時間戳首先轉化為格式化的字串,再從

Python繪圖Turtle

        Turtle庫是Python語言中一個很流行的繪製圖像的函式庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的座標系原點,(0,0)位置開始,它根據一組函式指令的控制,在這個平面座標系中移動,從而在它爬行的路徑上繪製了圖形。 turtle繪圖的基礎知識: 1.

python爬蟲之requests(一,如何通過requests來獲得頁面資訊)

前言: 爬蟲的基礎是與網頁建立聯絡,而我們可以通過get和post兩種方式來建立連線,而我們可以通過引入urllib庫[在python3的環境下匯入的是urllib;而python2的環境下是urllib和urllib2]或者requests庫來實現,從程式的複雜度和可讀性

Python安裝MySQL(解決Microsoft Visual C++ 9.0 is required )

前面我們介紹的Python網路爬蟲通常將抓取的資料儲存至TXT或CSV檔案,而當資料量增加之時,就需要將其儲存至本地資料庫了。Python訪問資料庫需要對應的介面程式,我們可以把介面程式理解為Pytho

python--裝飾器

blog 內容 class align fun turn strip 叠代器 ros Python---裝飾器詳解 定義: 本質上是一個函數。作用是用來裝飾另一個函數(即被裝飾函數),給被裝飾函數添加功能。前提是不能改變被裝飾函數的源代碼和調用方式。這樣的一個函數稱之為裝飾

Python裝飾器

def 功能 style out return 裝飾器 代碼 方法 情況 首先是不使用裝飾器的情況,又需要在不修改原函數的情況話修改函數結果 1 def outer(func): 2 def inner(): 3 print("Hello")

C++11 std::chrono

toolbar space max mil exp 值類型 cond 精度 ++i 所謂的詳解只不過是參考www.cplusplus.com的說明整理了一下,因為沒發現別人有詳細講解。   chrono是一個time library, 源於boost,現在已經是C++標準。

mysql數據 之 自學成才1

簡化 註意 可能 方法 after 字符型 專題 mar 建議 一、學習目錄 1.認識數據庫和mysql 2.mysql連接 3.入門語句 4.詳解列類型 5.增刪改查 INSERT INTO 表名(列1,…… 列n) VALUES(值 1,…… 值 n); *(列

python魔法方法

返回 call __init__ and -m 描述 nbsp shift 賦值 文章來源:http://blog.csdn.net/koko66/article/details/42709279 據說,Python 的對象天生擁有一些神奇的方法,它們總被雙下劃線所包圍

Python模塊以及import本質,獲得文件當前路徑os.path.abspath,獲得文件的父目錄os.path.dirname,放到系統變量的第一位sys.path.insert(0,x)

alt 獲取 詳解 nbsp spa 絕對路徑 解釋 系統 port 模塊介紹 1、定義: 模塊:用來從邏輯上組織python代碼(變量,函數,類,邏輯:實現一個功能),本質就是.py結尾的python文件(文件名:test.py,對應的模塊名:test) 包:用來從邏輯上