最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年06月18日 10:37:11   作者:數(shù)據(jù)地獄官  
這篇文章主要介紹了Numpy 多維數(shù)據(jù)數(shù)組的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(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等。

我們也可以用比特來指定大?。篿nt64、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隨機數(shù)

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

#來自于正態(tài)分布的隨機數(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[::]#下限、上限、默認步數(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]

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

5.3先進的索引方法

數(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ī)律進行+、-、*的算術(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)文章

  • python如何隨機生成高強度密碼

    python如何隨機生成高強度密碼

    這篇文章主要為大家詳細介紹了python隨機生成高強度密碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 如何搭建pytorch環(huán)境的方法步驟

    如何搭建pytorch環(huán)境的方法步驟

    這篇文章主要介紹了如何搭建pytorch環(huán)境的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 安裝2019Pycharm最新版本的教程詳解

    安裝2019Pycharm最新版本的教程詳解

    這篇文章主要介紹了安裝2019Pycharm最新版本的教程詳解,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Python實現(xiàn)將Excel轉(zhuǎn)換成xml的方法示例

    Python實現(xiàn)將Excel轉(zhuǎn)換成xml的方法示例

    這篇文章主要介紹了Python實現(xiàn)將Excel轉(zhuǎn)換成xml的方法,涉及Python針對Excel文件的讀取、遍歷、節(jié)點設(shè)置與xml生成等相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • 圖解Python中深淺copy(通俗易懂)

    圖解Python中深淺copy(通俗易懂)

    這篇文章主要介紹了圖解Python中深淺copy(通俗易懂),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 利用python程序幫大家清理windows垃圾

    利用python程序幫大家清理windows垃圾

    Python 是一種面向?qū)ο?、解釋型計算機程序設(shè)計語言,下面這篇文章主要給大家介紹了利用python程序如何實現(xiàn)清理垃圾的功能,本文只適用于windows,有需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Python實現(xiàn)的十進制小數(shù)與二進制小數(shù)相互轉(zhuǎn)換功能

    Python實現(xiàn)的十進制小數(shù)與二進制小數(shù)相互轉(zhuǎn)換功能

    這篇文章主要介紹了Python實現(xiàn)的十進制小數(shù)與二進制小數(shù)相互轉(zhuǎn)換功能,結(jié)合具體實例形式詳細分析了二進制與十進制相互轉(zhuǎn)換的原理及Python相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-10-10
  • python數(shù)據(jù)處理之如何選取csv文件中某幾行的數(shù)據(jù)

    python數(shù)據(jù)處理之如何選取csv文件中某幾行的數(shù)據(jù)

    這篇文章主要給大家介紹了關(guān)于python數(shù)據(jù)處理之如何選取csv文件中某幾行的數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python 實現(xiàn)Numpy中找出array中最大值所對應(yīng)的行和列

    Python 實現(xiàn)Numpy中找出array中最大值所對應(yīng)的行和列

    今天小編就為大家分享一篇Python 實現(xiàn)Numpy中找出array中最大值所對應(yīng)的行和列,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python學(xué)習(xí)之列表的運用

    python學(xué)習(xí)之列表的運用

    這篇文章主要介紹了python學(xué)習(xí)之列表的運用,文章首先通過創(chuàng)建列表展開列表運用的相關(guān)資料,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05

最新評論

监利县| 遂溪县| 改则县| 古田县| 阿拉善左旗| 竹山县| 五指山市| 二连浩特市| 晋中市| 辰溪县| 信阳市| 屯昌县| 万源市| 津市市| 昌乐县| 内黄县| 东乌珠穆沁旗| 元氏县| 玛沁县| 临武县| 方正县| 北川| 阿克陶县| 揭阳市| 怀集县| 敦化市| 文安县| 噶尔县| 丰都县| 淮阳县| 丹阳市| 芷江| 南充市| 乌兰浩特市| 辽阳县| 新建县| 隆化县| 新宁县| 磐石市| 丰都县| 东光县|