numpy常用指令大全


​ 最近在自學numpy,從網上找了視頻來看,感覺numpy的指令很多,怕記不清所以統一貼出來方便查閱。

import numpy as np 導入numpy模塊,一般簡寫為np

array = np.array([[1,2,3],[2,3,4]])

numpy的屬性

print(array) 打印出數組

print("number of dim:",array.ndim) 判斷數組是幾維的(一維二維等等)

print("shape:",array.shape)判斷數組的形狀

print("size:"array.size)判斷數組的大小

numpy的創建array

array = np.array([[1,2,3],[2,3,4]]簡單創建(注意下打印出來之后沒有中間,號)

array = np.array([[1,2,3],dtype=np.int)

print(array.dtype) dtype設定數組中的格式,一般有int,float等等,默認的是64位的,如果要32位的改成int32,通常來說位數越小占用空間越小,一般保留64位

a = np.zeros((5))

a = np.nes((5))

a = np.empty(([3,4])) 常見的全0全1全空數組

a=np.arange(10,20,2).reshape((3,4)) 生成從10到20步長為2的整數數組(不包括20,10位置默認為0),並重新變為3行4列的數組格式

a = np.linespace(1,10,20)生成線段,20是生成線段的份數

numpy基礎運算

a=np.array([10,20,30,40])

b=np.arange(4)生成從0到3的數組

常規的加減乘除,即+-*/都是對應位直接做計算得到結果,當運用單一矩陣乘方的時候遵循Python的規則用**,三角函數需要調用,例如c=np.sin(a).判斷可以直接把條件加到括號里,如print(b<3)。二維的矩陣乘法運算(從線性代數角度來說)如下:

c_dot=np.dot(a,b)

或者

c_dot_2=a.dot(b)

隨機生成一個array,每個元素都是0到1之間的隨機數,需要制定形狀:

a = np.random.random((2,4))

np.sum(a,axis=1)求和,axis=1是對每一列中找,axis=0是對每一行中找,會針對每一行(列)中分別查找計算

np.min(a)求最小值

np.max(a)求最大值

np.argmin(a)求最小值的索引

np.argmax(a)求最大值的索引

np.mean(a)求平均值

np.median(a)求中位數

np.cumsum(a)是一個累加的過程,逐步的加進去,顯示出累加的每一步

np.diff(a)累差,就是每個元素和之前的差

np.nonzero(a)找出非0的數並將它們的索引列出來

np.sort(a)排序

np,transpose(a)矩陣反向,行列互換並且倒序

np.clip(a,3,5)截取,a中所有小於3的讓他為3,大於5的讓他為5,中間的不變

numpy的索引

A=np.arange(3,15).reshape((3,4))

print(A[3])類似於python,對一維來說是直接訪問對應索引,對二維來說單索引訪問的是對應的行,雙索引才是對應的單個元素如,print(A[2][1])print(A[2,1])是一樣的,print(A[2,:])代表第二行的所有數,print(A[1,1:3])第二行從1到3的數即8和9

for循環:

for row in A:

print(row) 迭代行

for column in A.T(就是前面的transpose):

print(column) 迭代列

A.flatten() 變平

a.ravel()  # returns the array, flattened

for item in A.flat:

print(item) 迭代項目,flat是上面的迭代器

numpy array合並

A = np.array([1,1,1])

B = np.array([2.2.2])

C = print(np.vstack((A,B))) vertical stack上下的合並

D = print(np.hstack((A,B))) horizontal stack 左右的合並

!--print(A[np.newaxis,:])--給A加了一個維度。?

E = np.concatenate((A,B,B),axis=0)多個array的合並,axis=0在上下維度進行合並

numpy array分割

A = np.arange(12).reshape((3,4))

print(np.spilt(A,2,axis=1)) 將A縱向平均分成2份(注意spilt中列數必須能被2整除),axis=0是橫向分割

print(np.array_spilt(A,2,axis=1))``不等量分割

print(np.vspilt(A,3))

print(np.vspilt(A,3)) 同上面的合並

numpy array的復制和深度復制(copy&deep copy)

視頻里講的很簡略,所以這邊把官方文檔轉過來。

有三種情況:

#完全不復制

簡單賦值不會創建數組對象或其數據的拷貝。

>>> a = np.arange(12)
>>> b = a            # no new object is created
>>> b is a           # a and b are two names for the same ndarray object
True
>>> b.shape = 3,4    # changes the shape of a
>>> a.shape
(3, 4)

Python將可變對象作為引用傳遞,所以函數調用不會復制。

>>> def f(x):
...     print(id(x))
...
>>> id(a)                           # id is a unique identifier of an object
148293216
>>> f(a)
148293216

#視圖或淺復制

不同的數組對象可以共享相同的數據。 view 方法創建一個新的數組對象,它查看相同的數據。

>>> c = a.view()
>>> c is a
False
>>> c.base is a                        # c is a view of the data owned by a
True
>>> c.flags.owndata
False
>>>
>>> c.shape = 2,6                      # a's shape doesn't change
>>> a.shape
(3, 4)
>>> c[0,4] = 1234                      # a's data changes
>>> a
array([[   0,    1,    2,    3],
       [1234,    5,    6,    7],
       [   8,    9,   10,   11]])

對數組切片返回一個視圖:

>>> s = a[ : , 1:3]     # spaces added for clarity; could also be written "s = a[:,1:3]"
>>> s[:] = 10           # s[:] is a view of s. Note the difference between s=10 and s[:]=10
>>> a
array([[   0,   10,   10,    3],
       [1234,   10,   10,    7],
       [   8,   10,   10,   11]])

深拷貝

copy 方法生成數組及其數據的完整拷貝。

>>> d = a.copy()                          # a new array object with new data is created
>>> d is a
False
>>> d.base is a                           # d doesn't share anything with a
False
>>> d[0,0] = 9999
>>> a
array([[   0,   10,   10,    3],
       [1234,   10,   10,    7],
       [   8,   10,   10,   11]])

#函數和方法概述

這里列出了一些根據類別排列的有用的NumPy函數和方法名稱。完整列表見Routines。

  1. 數組創建

    arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r, zeros, zeros_like

  2. 轉換

    ndarray.astype, atleast_1d, atleast_2d, atleast_3d, mat

  3. 手法

    array_split, column_stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, ndarray.item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack

  4. 問題

    all, any, nonzero, where

  5. 順序

    argmax, argmin, argsort, max, min, ptp, searchsorted, sort

  6. 操作

    choose, compress, cumprod, cumsum, inner, ndarray.fill, imag, prod, put, putmask, real, sum

  7. 基本統計

    cov, mean, std, var

  8. 基本線性代數

    cross, dot, outer, linalg.svd, vdot


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM