亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Numpy 多維數(shù)據(jù)數(shù)組的實現(xiàn)

 更新時間:2020年06月18日 10:37:11   作者:數(shù)據(jù)地獄官  
這篇文章主要介紹了Numpy 多維數(shù)據(jù)數(shù)組的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

numpy包(模塊)幾乎總是用于Python中的數(shù)值計算。這個軟件包為Python提供了高性能的向量、矩陣、張量數(shù)據(jù)類型。它是在C和Fortran中創(chuàng)建的,因此當(dāng)計算被矢量化(用矩陣和矢量表示操作)時,性能很高。

1.模塊的導(dǎo)入:

%matplotlib inline
import matplotlib.pyplot as plt
from numpy import *

2.數(shù)組創(chuàng)建numpy

有幾種初始化numpy數(shù)組的方法,例如:使用Python的list或tuple。使用旨在創(chuàng)建Numpy數(shù)組的函數(shù),如arrange、linspace等。從文件中讀取數(shù)據(jù)(例如Python pickle格式)

2.1根據(jù)列表創(chuàng)建numpy.array

v = array([1,2,3,4])
v


M = array([[1, 2], [3, 4]])
M

v和M 都是ndarray類型的對象,由numpy模塊創(chuàng)建。

type(v), type(M)

v數(shù)組和M數(shù)組的區(qū)別在于它們的尺寸(形式)。我們可以使用ndarray.shape屬性來獲取大小信息。

v.shape

M.shape

矩陣中元素的數(shù)量可以通過屬性ndarray.size

M.size

也可以使用numpy方法numpy.shape 和 numpy.size

shape(M)

size(M)

numpy.ndarray 看起來像一個普通的 Python 列表。使用它們而不是Python列表有幾個原因。

Python的列表是非常常見的。它們可以包含任何對象。他們是動態(tài)類型化的。它們不支持矩陣和詩詞作品等數(shù)學(xué)運算。由于動態(tài)類型的原因,在Python中用list實現(xiàn)這種操作并不是很有效。
Numpy數(shù)組是靜態(tài)類型化和同質(zhì)化的。元素類型是在創(chuàng)建數(shù)組時定義的(那么數(shù)組數(shù)據(jù)類型可以改變)。
Numpy數(shù)組不是很耗費內(nèi)存。
得益于靜態(tài)類型化,數(shù)學(xué)函數(shù)如乘積和numpy數(shù)組的和可以在編譯語言中實現(xiàn)(使用C和Fortran)。
使用ndarray數(shù)組的dtype(數(shù)據(jù)類型)屬性,我們可以看到數(shù)組的數(shù)據(jù)類型。

M.dtype

試圖分配一個錯誤類型(不一樣的類型)的值會導(dǎo)致錯誤。

M[0,0] = "hello"

創(chuàng)建數(shù)組時,可以分別指定數(shù)據(jù)類型。

M = array([[1, 2], [3, 4]], dtype=complex)
M

通常使用以下dtype值:int、float、complex、bool、object等。

我們也可以用比特來指定大小:int64、int16、float128、complex128。

3.使用函數(shù)生成數(shù)組

使用python列表來指定大型數(shù)組是不切實際的。你可以使用各種Numpy方法。

3.1arrange

x = arange(0, 10, 1) # arguments: start, stop, step
x

x = arange(-1, 1, 0.1)
x

3.2linspace 和 logspace

使用linspace,區(qū)間的兩端都被包括在內(nèi),參數(shù):(開始,停止,點的數(shù)量)

linspace(0, 10, 25)

logspace(0, 10, 10, base=e)

3.3mgrid

x, y = mgrid[0:5, 0:5]
x
y

3.4隨機(jī)數(shù)

#導(dǎo)入所需模塊
from numpy import random
#區(qū)間[0,1]內(nèi)的均勻分布數(shù)。
random.rand(5,5)

#來自于正態(tài)分布的隨機(jī)數(shù)
random.randn(5,5)

3.6diag

#對角矩陣
diag([1,2,3])

#偏移對角矩陣
diag([1,2,3], k=1)

3.5零和單位矩陣

zeros((3,3))

ones((3,3))

4.文件導(dǎo)入和導(dǎo)出

4.1逗號分隔的值(CSV)

一個非常常見的數(shù)據(jù)存儲格式是CSV,以及類似的格式,如TSV(制表分隔值)。要從這些文件中讀取數(shù)據(jù),你可以使用以下方法numpy.genfromtxt

data = genfromtxt('stockholm_td_adj.dat')
data.shape

fig, ax = plt.subplots(figsize=(14,4))
ax.plot(data[:,0]+data[:,1]/12.0+data[:,2]/365, data[:,5])
ax.axis('tight')
ax.set_title('Температура в Стокгольме')
ax.set_xlabel('год')
ax.set_ylabel('температура (C)');

使用numpy.savetxt我們可以將數(shù)組保存在CSV中。

M = random.rand(3,3)
M

savetxt("random-matrix.csv", M)
savetxt("random-matrix.csv", M, fmt='%.5f') # fmt 指定格式

4.2numpy數(shù)組的主要文件格式。

保存和讀取的方法numpy.save 和 numpy.load

save("random-matrix.npy", M)
load("random-matrix.npy")

4.3numpy數(shù)組的其他屬性

M.itemsize#每個byte中的單元數(shù)
M.nbytes#byte數(shù)目
M.ndim#單位數(shù),計數(shù)

5.使用數(shù)組

5.1編制索引

你可以使用方括號和索引來選擇數(shù)組的元素。

# v是一個只有一個維度的向量,所以一個索引就足以獲得元素。
v[0]

# M是一個矩陣(二維數(shù)組),所以需要兩個索引(行,列)。
M[1,1]

如果我們省略了多維數(shù)組中的索引,就會返回一些值(一般情況下,N-1維的數(shù)組)。

M

M[1]

M[1,:]#第一行

M[:,1]#第一列

使用索引,你可以為單個數(shù)組元素賦值。

M[0,0] = 1
M

也適用于行和列

#也適用于行和列
M[1,:] = 0
M[:,2] = -1
M

5.2選擇數(shù)組的一部分

你可以使用M[lower:uperior:step]語法來獲取一個數(shù)組的一部分。

A = array([1,2,3,4,5])
A

A[1:3]

數(shù)組的部分是可變的:如果給它們分配新的值,那么從它們提取的數(shù)組就會改變原來的數(shù)組。

A[1:3] = [-2,-3]
A

我們可以省略M[lower:upper:step]中的部分參數(shù)。

A[::]#下限、上限、默認(rèn)步數(shù)

低于零的指數(shù)從數(shù)組的末端開始計算。

A = array([1,2,3,4,5])
A[-1]#最后一個元素
A[-3:]#最后三個元素

索引分區(qū)也適用于多維數(shù)組。

A = array([[n+m*10 for n in range(5)] for m in range(5)]) 
A

#方陣
A[1:4, 1:4]

#漸進(jìn),帶有指定間隔數(shù)
A[::2, ::2]

5.3先進(jìn)的索引方法

數(shù)組的值可以作為選擇項目的索引。

row_indices = [1, 2, 3]
A[row_indices]

col_indices = [1, 2, -1]
A[row_indices, col_indices]

你也可以使用掩碼:如果掩碼類型為bool,那么根據(jù)掩碼元素的值與相應(yīng)的索引,選擇該元素(True)或不選擇(False)。

B = array([n for n in range(5)])
B

row_mask = array([True, False, True, False, False])
B[row_mask]

row_mask = array([1,0,1,0,0], dtype=bool)
B[row_mask]

這個函數(shù)對于根據(jù)某些條件從數(shù)組中選擇元素非常有用。

x = arange(0, 10, 0.5)
x

mask = (5 < x) * (x < 7.5)
mask

x[mask]

5.4從數(shù)組中提取數(shù)據(jù)和創(chuàng)建數(shù)組的函數(shù)。

5.4.1where

索引掩碼可以通過使用以下方法轉(zhuǎn)換為位置索引 where

indices = where(mask)
indices

x[indices]#這個索引相當(dāng)于x[mask]的索引。

5.4.2diag

使用diag函數(shù)還可以提取對角線和子對角線元素。

diag(A)

diag(A,-1)

5.4.3take

類似于上述的索引方法。

v2 = arange(-3,3)
v2

row_indices = [1, 3, 5]
v2[row_indices]

v2.take(row_indices)

但take也可以在列表和其他對象上工作。

take([-3, -2, -1, 0, 1, 2], row_indices)

5.4.4choose

從多個數(shù)組中提取數(shù)值。

which = [1, 0, 1, 0]
choices = [[-2,-2,-2,-2], [5,5,5,5]]
 
choose(which, choices) # 0th elem of 0 array, 1st elem of 1 array, ...

6.線性代數(shù)

6.1點積運算

v1 = arange(0, 5)
v1 * 2

v1 + 2

A * 2

A + 2

6.2基礎(chǔ)運算

A * A

v1 * v1

A.shape, v1.shape

A * v1

7.矩陣

7.1矩陣

dot(A, A)

dot(A, v1)

dot(v1, v1)

也可以將數(shù)組轉(zhuǎn)換為矩陣的類型。然后再根據(jù)矩陣代數(shù)的規(guī)律進(jìn)行+、-、*的算術(shù)運算。

M = matrix(A)
v = matrix(v1).T#換位
v

M * M

M * v

v.T * v

v + M*v

8.數(shù)據(jù)處理

shape(data)

8.1平均值

#溫度柱
mean(data[:,3])

過去200年,斯德哥爾摩的平均氣溫在6.2攝氏度左右。

8.2標(biāo)準(zhǔn)差和離散度

std(data[:,3]), var(data[:,3])

8.3sum, prod, и trace

d = arange(0, 10)
d

#求和
sum(d)

#所有元素的乘積
prod(d+1)
#累計總和
cumsum(d)

#累積乘積
cumprod(d+1)
#和diag(A).sum()一樣
trace(A)

8.4多變量數(shù)據(jù)

m = random.rand(3,3)
m

m.max()

#每列最大值 
m.max(axis=0)

#每行最大值 
m.max(axis=1)

9.改變陣列的形狀和大小

A

n, m = A.shape
B = A.reshape((1,n*m))
B

B[0,0:5] = 5
B

A 

B = A.flatten()
B

B[0:5] = 10
B

#A沒有改變,因為B是A的副本,不是同一個對象的引用。
A

10.增加一個新的度量newaxis

v = array([1,2,3])
shape(v)

#向量 -> 單列矩陣
v[:, newaxis]

#尺寸
v[:,newaxis].shape

v[newaxis,:].shape

11.聯(lián)合

b = array([[5, 6]])
a = array([[5, 6]])
concatenate((a, b), axis=0)

concatenate((a, b), axis=1)

12.hstack and vstack

vstack((a,b))

hstack((a,b))

13.Copy и "deep copy"

A = array([[1, 2], [3, 4]])
A

#B等同于A
B = A 
#改變B,將影響A
B[0,0] = 10
 
B

A

B = copy(A)
#現(xiàn)在改變B將不再影響A
B[0,0] = -5
B

A

14.矩陣的循環(huán)

v = array([1,2,3,4])
 
for element in v:
  print(element)

M = array([[1,2], [3,4]])
 
for row in M:
  print("row", row)
  
  for element in row:
    print(element)

通過枚舉,可以同時獲得元素的值和索引。

for row_idx, row in enumerate(M):
  print("row_idx", row_idx, "row", row)
  
  for col_idx, element in enumerate(row):
    print("col_idx", col_idx, "element", element)
    
    # update the matrix M: square each element
    M[row_idx, col_idx] = element ** 2

#每個元素現(xiàn)在都是列表
M

到此這篇關(guān)于Numpy 多維數(shù)據(jù)數(shù)組的實現(xiàn)的文章就介紹到這了,更多相關(guān)Numpy 多維數(shù)據(jù)數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何在 Django 模板中輸出

    如何在 Django 模板中輸出 "{{"

    這篇文章主要介紹了如何在 Django 模板中輸出 "{{" ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python實現(xiàn)拷貝/刪除文件夾的方法詳解

    Python實現(xiàn)拷貝/刪除文件夾的方法詳解

    這篇文章主要介紹了Python實現(xiàn)拷貝/刪除文件夾的方法,涉及Python針對文件夾的遞歸、遍歷、拷貝、刪除等相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2018-08-08
  • python中的GUI實現(xiàn)計算器

    python中的GUI實現(xiàn)計算器

    這篇文章主要介紹了如何利用python中的GUI實現(xiàn)計算器,文章教大家用用python的GUI做界面布局,計算器代碼熟悉控件的使用方法、優(yōu)化計算器代碼,解決獲取按鈕文本的方法,具有一定的參考價值,需要的朋友可以參考一下
    2021-12-12
  • 解決Python獲取文件提示找不到指定路徑can‘t?open?file?'area.py':[Errno?2]?No?such?file?or?directory

    解決Python獲取文件提示找不到指定路徑can‘t?open?file?'area.py':

    這篇文章主要給大家介紹了關(guān)于如何解決Python獲取文件提示找不到指定路徑can‘t?open?file?'area.py':[Errno?2]?No?such?file?or?directory的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • python 請求服務(wù)器的實現(xiàn)代碼(http請求和https請求)

    python 請求服務(wù)器的實現(xiàn)代碼(http請求和https請求)

    本篇文章主要介紹了python 請求服務(wù)器的實現(xiàn)代碼(http請求和https請求),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • python實現(xiàn)打磚塊游戲

    python實現(xiàn)打磚塊游戲

    這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Pytorch使用卷積神經(jīng)網(wǎng)絡(luò)對CIFAR10圖片進(jìn)行分類方式

    Pytorch使用卷積神經(jīng)網(wǎng)絡(luò)對CIFAR10圖片進(jìn)行分類方式

    這篇文章主要介紹了Pytorch使用卷積神經(jīng)網(wǎng)絡(luò)對CIFAR10圖片進(jìn)行分類方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python圖像處理之模糊圖像判斷

    Python圖像處理之模糊圖像判斷

    這篇文章主要為大家詳細(xì)介紹了Python圖像處理中的模糊圖像判斷的實現(xiàn),文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2022-12-12
  • 使用keras和tensorflow保存為可部署的pb格式

    使用keras和tensorflow保存為可部署的pb格式

    這篇文章主要介紹了使用keras和tensorflow保存為可部署的pb格式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Matplotlib繪圖基礎(chǔ)之動畫繪制詳解

    Matplotlib繪圖基礎(chǔ)之動畫繪制詳解

    matplotlib的動畫一直是一個強(qiáng)大但使用頻率不高的功能,通過動畫來展示數(shù)據(jù)和模型的變化過程,可使數(shù)據(jù)的可視化更加生動形象,下面就跟隨小編一起學(xué)習(xí)一下Matplotlib是如何繪制動畫的吧
    2023-08-08

最新評論