1. 程式人生 > >【python】numpy基礎學習

【python】numpy基礎學習

numpy是Python中科學計算的核心庫。其主要資料型別是ndarray,即同種元素的多維陣列。

narray屬性

import numpy as np
a=np.array([[1,2,3],[2,3,4],[4,5,6]])
#narray屬性
a.ndim#多維陣列的維數 2
a.shape# 表示每個維度的大小(的陣列)(3,3)
a.size#表示多維陣列的總個數 9
a.dtype#多維陣列元素的資料型別 int32
a.itemsize#每個元素的位元組大小 4
a.data#包含實際陣列元素的緩衝區  <memory at 0x0000014FE0A5CA68>

其實發現多維陣列narray與opencv mat類的資料成員很類似。

narray中的axis

在numpy中很多函式涉及到axis,為什麼會出現axis,是因為在多維陣列中,有多種不同運算元組的方向,例如二維陣列,按列操作 axis=1,按行操作,axis=0

總之,若axis=i,則numpy沿著第i個下標變化的方向進行操作

建立陣列

1.自定義建立多維陣列

將python內建型別通過array函式轉換成narray型別

import numpy as np
#list[]通過array函式轉換為陣列型別
a=np.array([[1,2,3],[2,3,4]]
) # tuple()通過array函式轉換為陣列型別 b=np.array(((1,2,3),(2,3,4))) # a,b相同 #均為array([[1, 2, 3],[2, 3, 4]])

指定建立得陣列型別

b=np.array([[1,2,3],[2,3,5]],dtype=complex)
#array([[ 1.+0.j,  2.+0.j,  3.+0.j],
#       [ 2.+0.j,  3.+0.j,  5.+0.j]])
2.生成特殊多維陣列(矩陣)

zeros生成全為0的矩陣或標量,ones生成全為1的矩陣或標量,empty生成隨機數。

c=np.zeros((1
,3))#生成矩陣,array([[ 0., 0., 0.]]) d=np.zeros(3)#生成標量 array([ 0., 0., 0.]) e=np.empty(4,dtype='int32')# array([ 858993458, 1081597747, 1202590842, 1081051873])

隨機函式生成

#生成15中的整數矩陣,23列的矩陣
f=np.random.randint(1,5,(2,3))#array([[4, 3, 3],[4, 1, 3]])
#生成15中的整數矩陣,3個整數
f=np.random.randint(1,5,3)#array([3, 4, 2])

#隨機生成0-1之間,23列的矩陣
m=np.random.rand(2,3)
#array([[ 0.84363692,  0.01760037,  0.39695061],
#       [ 0.87022164,  0.09440285,  0.24435673]])

生成均勻分佈的多維陣列

import numpy as np
#arange(最小值,最大值,步長)(左閉右開) 
a=np.arange(0,3,0.5)#array([ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5])
c=np.arange(3)# 最大值3 預設步長為3 array([0, 1, 2])


#linspace(最小值,最大值,元素數量) (左閉右閉)
b=np.linspace(0,3,6)#array([ 0. ,  0.6,  1.2,  1.8,  2.4,  3. ])

陣列運算

*用於矩陣元素相乘,(表示多少次方)而dot用於矩陣乘法

import numpy as np
a=np.array([[1,2,3],[2,3,4]])
b=np.array([[1,2],[2,3],[3,4]])
# c=a.dot(b)
c=np.dot(a,b)#返回就是開創的計算好的記憶體空間
#結果均為
#array([[14, 20],
#       [20, 29]])

a=np.array([[1,2,3],[2,3,4]])**3
#array([[ 1,  8, 27],
#       [ 8, 27, 64]], dtype=int32)

其中很多內建函式的使用,即利用.訪問,如a.sum/a.max/a.min,同時也提供很多全域性函式使用例如:np.exp()/np.sqrt()等,具體使用可參加函式說明,其中可以指定axis確定處理資料的方式。

陣列索引訪問

numpy中多維陣列的訪問與matlab中訪問有類似的地方。

一維陣列

一維陣列訪問記住 start:end:step 即可
遍歷方法

for i in a:
    print(i)

下面舉例說明start:end:step的用法,從下面的程式碼段可知:
若不寫step預設為1,不寫start預設從0開始(array索引從0開始),不寫end預設為最後一位。
同時注意特殊的索引方法,-1表示最後一個元素。

import numpy as np
a=np.arange(10)#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

a[1:5:1]#array([1, 2, 3, 4])

a[:6]#array([0, 1, 2, 3, 4, 5])

a[0:6]#array([0, 1, 2, 3, 4, 5])

a[3:]#array([3, 4, 5, 6, 7, 8, 9])

a[::4]#array([0, 4, 8])

#特殊(步長-1表示方向)
a[::-1]#array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
a[-4:-8:-1]#array([6, 5, 4, 3])
#a[4:8:-1]wrong!
二維陣列

遍歷方法

for row in b:
    print(row)

二維索引利用array[行操作,列操作],其中行列操作遵循strat:end:step即可,即可從二維陣列中取出行,列,資料塊。
同時注意如下通過索引從陣列中取出的切片若發生變化,則原來的陣列也隨之發生變化。

import numpy as np
a=np.arange(10)#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

a[1:5:1]#array([1, 2, 3, 4])

a[1:5:1]=5

a#array([0, 5, 5, 5, 5, 5, 6, 7, 8, 9])

相關推薦

pythonnumpy基礎學習

numpy是Python中科學計算的核心庫。其主要資料型別是ndarray,即同種元素的多維陣列。 narray屬性 import numpy as np a=np.array([[1,2,3],[2,3,4],[4,5,6]]) #narr

pythonNumpy中stack(),hstack(),vstack()函數詳解

一起 int pan 控制 意思 name 體會 你們 如何 轉自 https://blog.csdn.net/csdn15698845876/article/details/73380803 這三個函數有些相似性,都是堆疊數組,裏面最難理解的應該就是stack()函數了,

pythonnumpy庫linspace相同間隔取樣 詳解

linspace可以用來實現相同間隔的取樣; numpy.linspace(start,stop,num=50,endpoint=True,retstep=False, dtype=None) 返回num均勻分佈的樣本,在[start, stop]。 Parameters(引數): start :

pythonnumpy.datetime64( ) 時間和 datetime.datetime 互轉

首先定義幾個時間變數datetime、Timestamp、numpy.datetime64: import datetime import numpy as np import pandas as p

Pythonnumpy.append中有坑

numpy 往array裡新增一個元素 首先這裡p_arr為一個numpy的array,p_為一個元素 p_arr = np.concatenate((p_arr,[p_])) # 先將p_變成list形式進行拼接,注意輸入為一個tuple p_arr = np.append(p_arr

Python數學基礎

一、整數反轉: 任意整數每位的數字倒轉,如:-1230 輸出 -321 假定數值範圍為 [−,   − 1],如果反轉後整數溢位那麼就返回 0。 思路:將數字轉成字串後利用列表功能進行倒轉,注意0和負號的特殊處理。 重點:列表順序相反操作 x[len(x

pythonnumpy中的tile函式

tile函式         在看機器學習實戰這本書時,遇到numpy.tile(A,B)函式,愣是沒看懂怎麼回事,裝了numpy模組後,實驗了幾把,原來是這樣子: 重複A,B次,這裡的B可以時int型別也可以是遠組型別。 >>> import num

pythonnumpy庫ndarray多維陣列的的運算:np.abs(x)、np.sqrt(x)、np.modf(x)等

numpy庫提供非常便捷的陣列運算,方便資料的處理。 1、陣列與標量之間可直接進行運算 In [45]: a Out[45]: array([[ 0, 1, 2, 3], [

pythonnumpy陣列(array)擴充(複製)方法repeat和tile的使用

但是很多情況下不需要使用,在進行矩陣加減運算的時候會自動複製 >>> a array([[1, 2],        [3, 4],        [5, 6]]) &g

PythonNumpy array

1。計算矩陣的size和dimension 兩個函式: array.ndim 和 np.size(array, axis) import numpy as np # 定義一個二維張量 X=np.array([[1,2,3,4], [5,6,7,8],

Pythonnumpy 中的 copy 問題詳解

這篇文章本是我在 segmentfault 上的一個回答,但是越來越覺得有必要單獨拿出來,畢竟這個問題挺常見的。具體可參看 numpy 官方文件 。 正文 numpy關於copy有三種情況,完全不復制

PythonNumpy簡單入門

Numpy   Numpy是Python中科學計算的核心庫。Numpy提供了高效能的多維陣列物件,還有用於處理這些陣列的工具。 陣列   Numpy的主要資料型別是ndarray即多維陣列,可以用巢狀的Python列表中初始化numpy陣列,並使用方括號訪問元素。陣列具有以下幾個屬性:

Pythonnumpy中的sum函式的使用

sum() 沒有axis引數表示全部資料相加 axis=0,表示按列相加 axis=1,表示按行相加 a = array([[1,2,3],[4,5,6]]) print(a) b = sum(a) print (b) c = sum(a, axis=0) print(

Pythonnumpy快速入門

1、基本概念 numpy的主要內容是齊次多維陣列,是一張表,元素型別相同,通常是數字,索引為一個正整數構成的元組。在numpy中,陣列的維叫做axes,axes的個數叫做rank。例如,[1,2,1]是3D空間中的一個座標點,作為陣列,它是一維的,有一個axe

Pythonnumpy陣列用dtype=float16初始化的坑

【Python坑系列】為了節約空間,使用numpy陣列時候採用了float16,結果發現精度遠遠不達標預設的floar64是最接近原本浮點數的a = 0.0001 * np.ones(10,np.flo

pythonnumpy庫陣列拼接np.concatenate官方文件詳解與例項

在實踐過程中,會經常遇到陣列拼接的問題,基於numpy庫concatenate是一個非常好用的陣列操作函式。 1、concatenate((a1, a2, …), axis=0)官方文件詳解 concatenate(...) concatenate(

WebJsp基礎學習

Apache目錄結構 Web 目錄結構 WEB-INF下包括下列檔案 WEB-INF目錄結構 1.      WEB-INF是java的WEB應用的安全目錄。所謂安全目錄就是客戶端無法訪問,只有伺服器端可以訪問的目錄。 2.      Web.xml,專案部署檔案。

MVVM- AngularJS基礎學習

Angular JS AngularJS 基礎入門案例 外觀頁面 <!--

PYTHON語法基礎 | 開始使用Python

Python的熱度不言而喻,機器學習、資料分析的首選語言都是Python,想要學習Python的小夥伴也很多,我之前也沒有認真用過Python,所以也想體驗一下它的魅力,索性花了兩天集中看了一下它的基本語法,組織了這篇筆記,一是加強一下自己的記憶和理解,二是可以分享給共同學習的小夥伴。這篇筆記主要是Pytho

Pythonpython基礎學習筆記

Python資料型別 整數 浮點數 字串 ’ ’ ” “ 布林值 True False 可以用and(與),or(或),not(非)運算 Python把0,空字串,None視為False,其他都是True。 空值 None 不是0,是