NumPy數值計算基礎(數組的創建方法,生成隨機數)

Numpy  簡介

Numpy 是用於數據科學計算的基礎,不但能夠完成科學計算任務,還能被用作高效地多維數據容器。用於存儲和處理大型矩陣。

Python提供了一個 array 模塊,和list 不同,它直接保存數值,但是由於Python的 array 模塊不支持多維,也沒有各種運算函數。

Numpy 彌補了這一遺憾。Numpy 提供了一種存儲單一數據類型的多維數組——ndarray(下文統稱數組)

1、數組屬性:
      ndarray(數組)是存儲單一數據類型的多維數組。

 
屬性 說明
ndim 返回 int。表示數組的維數
shape 返回 tuple。表示數組的尺寸,對於 n 行 m 列的矩陣,形狀爲(n,m)
size 返回 int。表示數組的元素總數,等於數組形狀的乘積
dtype 返回 data-type。描述數組中元素的類型
itemsize 返回 int。表示數組的每個元素的大小(以字節爲單位)

2、數組創建(創建一維或多維數組)
      numpy.array(object,dtype=None,copy=True,order=‘K’,subok=False,ndmin=0)

參數名稱 說明
object 接收 array。表示想要創建的數組。無默認
dtype 接收 data-type。表示數組所需的數據類型。如果未給定,則選擇
保存對象所需的最小類型。默認爲 None
ndmin 接收 int。指定生成數組應該具有的最小維數。默認爲 None

數組的創建

(1)一維數組的創建

import numpy as np

arr1 = np.array([1,2,3,4])
print(arr1)
# 結果: [1 2 3 4]

print(type(arr1))
# 結果: <class 'numpy.ndarray'>

 

(2)二維數組的創建

import numpy as np

arr2 = np.array([[1,2,3,4],[4,5,6,6],[7,8,9,10]])
print(arr2)
# 結果: 
# [[ 1  2  3  4]
#  [ 4  5  6  6]
#  [ 7  8  9 10]]

print(type(arr2))
# 結果: <class 'numpy.ndarray'>

 

(3)數組的屬性

import numpy as np

arr = np.array([[1,2,3,4],[4,5,6,6],[7,8,9,10]])

print('數組結構:',arr.shape) 
print('數組元素個數:',arr.size)
print('數組元素類型:',arr.dtype)
print('數組維度:',arr.ndim)
print('數組元素大小:',arr.itemsize)

# 結果: 
# 數組結構: (3, 4)  # 3行4列
# 數組元素個數: 12
# 數組元素類型: int32
# 數組維度: 2   # 二維數組
# 數組元素大小: 4 

 

(4)重設數據結構

import numpy as np

arr = np.array([[1,2,3,4],[4,5,6,6],[7,8,9,10]])    # 原本3行4列
print(arr)
# 結果: 
# [[ 1  2  3  4]
#  [ 4  5  6  6]
#  [ 7  8  9 10]]

arr.shape = 4,3    # 重設爲4行3列
print('重設arr2數據結構後:',arr)
# 重設arr2數據結構後: 
# [[ 1  2  3]
#  [ 4  4  5]
#  [ 6  6  7]
#  [ 8  9 10]]

 

numpy中自動生成數組的函數

(1)arange()函數的表達式

格式: arange(起始值,結束值,步長)    注意: 不包含結束值

import numpy as np

print(np.arange(1,10,1))
# 結果: [1 2 3 4 5 6 7 8 9]

 range與arange的區別:

range( )函數只能創建int型list,如果步長不是整數,是小數,則會出現錯誤

arange()可以使用float型數據

import numpy as np

arr = np.arange(0,1,0.1)    # arange()可以使用float型數據
print(arr)
# 結果: [ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9]

arr2 = list(range(1,10,1))
print(arr2)
# 結果: [1, 2, 3, 4, 5, 6, 7, 8, 9]

arr3 = list(range(1,10,0.1))    # 如果步長是float類型,則會報錯
print(arr3)
# 結果: ypeError: 'float' object cannot be interpreted as an integer

 

(2)等差數列:  linspace(起始值,結束值,元素個數) 

import numpy as np

arr = np.linspace(1,10,10)
print(arr)
# 結果: [  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.]

 

(3)等比數列: logspace(起始值10^a,結束值10^b,元素個數),底數默認爲10

import numpy as np

arr = np.logspace(1,2,5)
print(arr)
# 結果: [  10.           17.7827941    31.6227766    56.23413252  100.        ]

 

(4)全0數組

import numpy as np

arr = np.zeros((2,3))   # 2行3列
print(arr)
# 結果:
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

 

(5)全1數組

import numpy as np

arr = np.ones((2,3))  # 2行3列
print(arr)
# 結果:
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]

 

(6)單位數組

import numpy as np

arr = np.eye(3)  # 3行3列
print(arr)
# 結果:
# [[ 1.  0.  0.]
#  [ 0.  1.  0.]
#  [ 0.  0.  1.]]

 

(7)對角數組: diag,一定是方陣

import numpy as np

arr = np.diag([1,2,3,4])  
print(arr)
# 結果:
# [[1 0 0 0]
#  [0 2 0 0]
#  [0 0 3 0]
#  [0 0 0 4]]

 

生成隨機數

(1)0~1的一維數組:  np.random.random

import numpy as np

arr = np.random.random(10)   # 隨機取10個
print(arr)

# 結果:
# [ 0.51801865  0.5746457   0.29800094  0.81485959  0.54768688  0.40696099
#   0.94247636  0.74356589  0.95578567  0.79127131]

 

(2)均勻分佈:  np.random.rand

以給定的形狀創建一個數組,並在數組中加入在[0,1)之間均勻分佈的隨機樣本

import numpy as np

arr = np.random.rand(4,3) 
print(arr)

# 結果:
# [[ 0.80227604  0.88811862  0.41145791]
#  [ 0.7945255   0.47529523  0.67895032]
#  [ 0.34225024  0.82894344  0.03426757]
#  [ 0.793489    0.00724797  0.58662593]]

arr2 = np.random.rand(2) 
print(arr2)

# 結果: [ 0.23103931  0.66302526]

 

(3)正態分佈:  np.random.randn 

通過本函數可以返回一個或一組服從標準正態分佈的隨機樣本值,標準正態分佈是以0爲均數、以1爲標準差的正態分佈,記爲N(0,1)

import numpy as np

arr = np.random.randn(4,3)
print(arr)

# 結果例如:
# [[ 0.04315637 -0.45477833 -0.27857073]
#  [-1.91932412  0.7338659   0.2525201 ]
#  [ 0.18677151  0.84322074  1.65225377]
#  [ 0.28711352 -0.79008218  0.72578138]]

arr2 = np.random.randn(3)
print(arr2)

# 結果例如: [-0.78690609  0.56418809 -1.64700147]

 

(4)隨機整數:  np.random.randint(最小值,最大值,size=[行,列])

import numpy as np

arr = np.random.randint(2,10,size=[2,5])
print(arr)

# 結果: 
# [[6 8 5 9 7]
#  [8 2 7 8 5]]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章