一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python擴展庫numpy入門教程

python擴展庫numpy入門教程

2022-02-24 00:24布小禪 Python

這篇文章主要為大家介紹了python擴展庫numpy入門教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、numpy是什么?

擴展庫numpy是Python支持科學計算的重要擴展庫,是數據分析和科學計算領域如scipy、pandas、sklearn 等眾多擴展庫中的必備擴展庫之一,提供了強大的N維數組及其相關運算、復雜的廣播函數、C/C++和Fortran代碼集成工具以及線性代數、傅里葉變換和隨機數生成等功能。本章童點介紹數組與矩陣及其相關運算,為學習和理解后面章節中的數據分析、機器學習打下良好的基礎。

簡單來說就是你用來為人工智能領域打基礎的東西,私話說得好,基礎不牢,地動山搖嘛~

所以這個地方可要好好學習哦~~

二、numpy數組

在numpy中使用的不是python自帶的數據類型list,而是numpy中的ndarray

那為什么使用ndarray而不是使用list呢?

因為ndarray是由c/c++寫出來的,占用內存更小,使用速度更快

創建一個ndarray的方法有很多,這里說下使用array方法轉化的

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/26 22:22
# @Version: 1.0
 
import numpy as np
 
li = [1, 2, 3]
tp = (1, 2, 3)
 
nday1 = np.array(li)
nday2 = np.array(tp)
 
print("*****類型*****")
print(type(nday1))
print(type(nday2))
 
print("*****數組*****")
print(nday1)
print(nday2)

輸出結果:

?
1
2
3
4
5
6
*****類型*****
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
*****數組*****
[1 2 3]
[1 2 3]

2.1 數組使用

如果元素相同的話,可以進行加減乘除

在元素個數相同的情況下,可以進行數組間的加減

在元素個數相同的情況下,可以進行數組間的乘除

對某個數進行的乘除,可以自動進行到所有元素

看例子理解:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/26 22:22
# @Version: 1.0
import numpy as np 
li = [1, 2, 3# 列表
tp = (1, 2, 3# 元組
nday1 = np.array(li)    # 內置方法將列表轉為ndarray
nday2 = np.array(tp)    # 內置方法將元組轉為ndarray
nday3 = np.array(range(5)) # 使用range內置函數方法生成ndarray連續數組
nday4 = np.array(range(5, 10))  # 使用range內置函數方法生成ndarray連續數組
print("*****類型*****")
print(type(nday1))
print(type(nday2))
print(type(nday3))
print(type(nday4))
print("*****數組*****")
print(nday1)
print(nday2)
print(nday3)
print(nday4)
print("*****數組加減*****")
print(nday2 + nday1)
print(nday2 - nday1)
print(nday4 - nday3)
print(nday3 + nday4)
# 在元素個數相同的情況下,可以進行數組間的加減
print("*****數組乘除*****")
print(nday2 * nday1)
print(nday2 // nday1)
print(nday4 * nday3)
print(nday4 // nday3)
# 在元素個數相同的情況下,可以進行數組間的乘除
print(nday1 * 3)
print(nday2 // 2)
print(nday3 * 2)
print(nday4 // 2)
# 對某個數進行的乘除,可以自動進行到所有元素

運行結果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
*****類型*****
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
*****數組*****
[1 2 3]
[1 2 3]
[0 1 2 3 4]
[5 6 7 8 9]
*****數組加減*****
[2 4 6]
[0 0 0]
[5 5 5 5 5]
[ 5  7  9 11 13]
*****數組乘除*****
[1 4 9]
[1 1 1]
[ 0  6 14 24 36]
[0 0 0 0 0]
[3 6 9]
[0 1 1]
[0 2 4 6 8]
[2 3 3 4 4]

2.2 創建數組

剛剛的array()方法是將列表和元組等迭代對象轉為ndarray數組

接下來要說的是自動創建數組

1. 使用empty創建空數組

里面會有初始值,但是數組初始為None

?
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/28 12:29
# @Version: 1.0
import numpy as np
em1 = np.empty(5)       # 創建一個長度為5的空數組
em2 = np.empty((2, 2))  # 創建一個2*2的空二維數組
 
print("一維數組,長度為5", em1)
print("二維數組,長度為2*2", em2)

輸出結果:

?
1
2
3
4
[9.96754604e-312 9.96754614e-312 2.60799828e-310 9.34609789e-307
 0.00000000e+000]
[[6.95299778e-310 9.96747617e-312]
 [0.00000000e+000 6.95299776e-310]]

2. 使用arange函數創建

arange是numpy自帶的的一個方法,作用與range這個Python內置函數相差無幾,都是生成數組

先導入numpy包

?
1
import numpy as np

然后創建數組

?
1
2
3
4
5
6
7
8
9
10
11
12
print("*****ararge創建數組*****")
 
aran_arr1 = np.arange(5)
aran_arr2 = np.arange(5, 10)
 
print("*****類型*****")
print(type(aran_arr1))
print(type(aran_arr2))
 
print("*****數組*****")
print(aran_arr1)
print(aran_arr2)

3. 使用zeros函數生成數組

zeros函數是numpy自帶的方法,作用是生成指定數量的全0一維數組,全0二維數組等

看下面的例子:

生成一個具有三個元素的一維數組和一個具有五個元素的一維數組:

?
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/27 21:31
# @Version: 1.0
 
import numpy as np
zero_arr = np.zeros(3)
zrro_arr2 = np.zeros(5)
print(zero_arr)
print(zrro_arr2)

運行結果:

[0. 0. 0.]
[0. 0. 0. 0. 0.]

當然這只是一位數組,你還可以生成二維數組,也就是矩陣

使用如下代碼可以生成一個三行三列的矩陣

?
1
zero_arr3 = np.zeros((3, 3))

輸出看看:

?
1
print(zero-arr3)

運行結果:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

4. ones函數生成數組

使用ones函數生成全1函數,方法同zeros

?
1
2
3
import numpy as np
 
ones_arr1 = np.ones(3)

輸出結果:

[1. 1. 1.]

生成一個三行三列的矩陣

?
1
2
3
import numpy as np
 
ones_arr2 = np.ones((3, 3))

輸出結果:

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

5. diag函數生成對角矩陣

什么是對角矩陣?你應該聽說過對角線,矩陣就是生成在對角線上的矩陣

函數參數是一個元祖

看代碼和運行結果能夠理解的更深刻

?
1
2
3
import numpy as np
 
diag_arr = np.diag((4, 3, 2, 1))

將diag_arr的輸出的結果為:

[[4 0 0 0]
 [0 3 0 0]
 [0 0 2 0]
 [0 0 0 1]]

看,對角線是不是你函數的參數,這下理解了吧

6. N維數組

N維數組就是多維數組,可以理解為數組里面還是數組,里面還是數組,可以參照這個形式

[[[1 2]
  [3 4]]
 [[5 6]
  [7 8]]]

這個概念確實有點抽象,有點難理解。這就是一個三維數組,是通過三維列表使用array方法轉換成ndarray的

代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/27 13:29
# @Version: 1.0
import numpy as np
 
li = [
    [[1, 2], [3, 4]],
    [[5, 6], [7, 8]]
]
te1 = np.array(li)
print(te1)

當然,二維數組也算是N維數組

2.3 訪問數組元素

numpy自帶了一個insert函數,可以往數組中插入元素

看實例:

?
1
2
3
li = [[1, 2, 3, 4], [5, 6, 7, 8], [2, 4, 6, 8]]
gb1 = np.array(li)
np.insert(gb1, 1, [1, 2, 3, 4])

輸出結果:

[1 1 2 3 4 2 3 4 5 6 7 8 2 4 6 8]

還有一個自帶的add函數,可以進行數組的相加減

數組嘛,可以使用下標來獲取數組元素

?
1
2
3
4
5
import numpy as np
 
li1 = [1, 2, 3, 4]
gb2 = np.array(li1)
print(gb2[1])

輸出結果為:

2

當然,它是一個數組,你理所應當的也可以使用循環語句來遍歷數組

三、了解矩陣

數組是數組,矩陣是矩陣。

數組是一種數據結構,可以存儲多種數據,可以有多維

矩陣是數學中的一個概念,只能存放數字,并且只能是二維的形式

生成矩陣的方法就和生成N維數組的方法是一樣的

先使用列表創建二維列表,然后再使用numpy的方法轉成矩陣,當然也有好幾中生成矩陣的方法

?
1
2
3
4
5
6
import numpy as np
li = [[1, 2, 3, 4], [5, 6, 7, 8]]
j1 = np.matrix(li)
print(j1)
print(type(j1))
print(j1.dtype)

輸出該矩陣:

?
1
2
3
4
輸出矩陣: [[1 2 3 4]
 [5 6 7 8]]
矩陣在Python的類型: <class 'numpy.matrix'>
在numpy中的類型: int32

矩陣可以進行各種數學運算,在numpy中都得到了很好的支持,這里就不細說了

3.1 廣播

何為廣播,廣播就是能將你的東西發送到各個區域,一般在計算機中是將信息發送到局域網絡中的每個計算機中。

而在numpy中也有廣播,只不過他是將元素自動補到數組,矩陣上,就像你在上面看到的,一個數組乘除一個元素,數組中的所有元素都會乘這個數

?
1
2
3
4
import numpy as np
 
li1 = [1, 2, 3, 4]
print(np.array(li1)*10)

輸出結果:

[10 20 30 40]

這個就是廣播,就是將數字10播到li轉成的數組中,能夠讓數組所有元素都乘10。

而不同維度的數組也可以這樣

?
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/9/27 13:40
# @Version: 1.0
import numpy as np
li = [[1, 2, 3, 4], [5, 6, 7, 8], [2, 4, 6, 8]]
gb1 = np.array(li)
li1 = [1, 2, 3, 4]
gb2 = np.array(li1)
print(gb1*gb2)

將一維數組的每個元素挨個廣播到二維數組,前提是:

二維數組中的一維數組的個數與一維數組的個數是相同的

運行結果:

[[ 1  4  9 16]
 [ 5 12 21 32]
 [ 2  8 18 32]]

以上就是python擴展庫numpy入門教程的詳細內容,更多關于numpy庫入門的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/m0_52883898/article/details/120928439

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本精品一区二区三区 | 亚洲spank男男实践网站 | 国产香蕉一区二区在线网站 | 男插女的下面免费视频夜色 | 国产免费又粗又猛又爽视频国产 | 成人亚洲欧美日韩在线观看 | 欧美日韩亚洲国内综合网香蕉 | 被调教的校花 | 国产精品久久久久久五月尺 | 高清不卡日本v在线二区 | 动漫美女被吸乳羞羞小说 | 四虎在线永久免费视频网站 | 丝袜兔女郎被啪在线观看91 | 草逼的视频| 亚洲精品免费观看 | 精品无码人妻一区二区免费AV | 亚洲视频在线观看不卡 | www.日本在线播放 | 色导行| 国产成人99精品免费观看 | 亚洲日日做天天做日日谢 | 7777奇米影视| 亚洲天堂日韩在线 | 韩国三级在线观看 完整版 韩国三级视频网站 | 好爽好舒服视频 | 亚洲国产精品免费在线观看 | 狠狠色婷婷狠狠狠亚洲综合 | 青青青国产成人久久111网站 | 日本精品一二三区 | 精品淑女少妇AV久久免费 | 波多野结衣女老师 | 四虎免费看黄 | 亚洲日本中文字幕天天更新 | sp啪啪调教打屁股网站 | 五月色婷婷网在线观看 | 国产色婷婷亚洲 | 成人精品网 | 免费国产成人α片 | 久久这里只有精品视频9 | 手机在线免费观看高清 | 91香蕉视频在线 |