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

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

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

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

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類型的對(duì)象,由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 看起來像一個(gè)普通的 Python 列表。使用它們而不是Python列表有幾個(gè)原因。

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

M.dtype

試圖分配一個(gè)錯(cuò)誤類型(不一樣的類型)的值會(huì)導(dǎo)致錯(cuò)誤。

M[0,0] = "hello"

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

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

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

我們也可以用比特來指定大?。篿nt64、int16、float128、complex128。

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

使用python列表來指定大型數(shù)組是不切實(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ù):(開始,停止,點(diǎn)的數(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

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

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

3.5零和單位矩陣

zeros((3,3))

ones((3,3))

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

4.1逗號(hào)分隔的值(CSV)

一個(gè)非常常見的數(shù)據(jù)存儲(chǔ)格式是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#每個(gè)byte中的單元數(shù)
M.nbytes#byte數(shù)目
M.ndim#單位數(shù),計(jì)數(shù)

5.使用數(shù)組

5.1編制索引

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

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

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

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

M

M[1]

M[1,:]#第一行

M[:,1]#第一列

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

M[0,0] = 1
M

也適用于行和列

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

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

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

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

A[1:3]

數(shù)組的部分是可變的:如果給它們分配新的值,那么從它們提取的數(shù)組就會(huì)改變?cè)瓉淼臄?shù)組。

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

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

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

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

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

索引分區(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ù)組的值可以作為選擇項(xiàng)目的索引。

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]

這個(gè)函數(shù)對(duì)于根據(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]#這個(gè)索引相當(dāng)于x[mask]的索引。

5.4.2diag

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

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也可以在列表和其他對(duì)象上工作。

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

5.4.4choose

從多個(gè)數(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點(diǎn)積運(yùn)算

v1 = arange(0, 5)
v1 * 2

v1 + 2

A * 2

A + 2

6.2基礎(chǔ)運(yùn)算

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ù)運(yùn)算。

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)
#累計(jì)總和
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沒有改變,因?yàn)锽是A的副本,不是同一個(gè)對(duì)象的引用。
A

10.增加一個(gè)新的度量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)

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

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

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

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

相關(guān)文章

  • 如何在 Django 模板中輸出

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

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

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

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

    python中的GUI實(shí)現(xiàn)計(jì)算器

    這篇文章主要介紹了如何利用python中的GUI實(shí)現(xiàn)計(jì)算器,文章教大家用用python的GUI做界面布局,計(jì)算器代碼熟悉控件的使用方法、優(yōu)化計(jì)算器代碼,解決獲取按鈕文本的方法,具有一定的參考價(jià)值,需要的朋友可以參考一下
    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 請(qǐng)求服務(wù)器的實(shí)現(xiàn)代碼(http請(qǐng)求和https請(qǐng)求)

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論