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

python擴展庫numpy入門教程

 更新時間:2021年11月04日 14:31:07   作者:布小禪  
這篇文章主要為大家介紹了python擴展庫numpy入門教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、numpy是什么?

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

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

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

二、numpy數(shù)組

在numpy中使用的不是python自帶的數(shù)據(jù)類型list,而是numpy中的ndarray

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

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

創(chuàng)建一個ndarray的方法有很多,這里說下使用array方法轉(zhuǎn)化的

#!/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("*****數(shù)組*****")
print(nday1)
print(nday2)

輸出結(jié)果:

*****類型*****
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
*****數(shù)組*****
[1 2 3]
[1 2 3]

2.1 數(shù)組使用

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

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

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

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

看例子理解:

#!/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)	# 內(nèi)置方法將列表轉(zhuǎn)為ndarray
nday2 = np.array(tp)	# 內(nèi)置方法將元組轉(zhuǎn)為ndarray
nday3 = np.array(range(5)) # 使用range內(nèi)置函數(shù)方法生成ndarray連續(xù)數(shù)組
nday4 = np.array(range(5, 10))  # 使用range內(nèi)置函數(shù)方法生成ndarray連續(xù)數(shù)組
print("*****類型*****")
print(type(nday1))
print(type(nday2))
print(type(nday3))
print(type(nday4))
print("*****數(shù)組*****")
print(nday1)
print(nday2)
print(nday3)
print(nday4)
print("*****數(shù)組加減*****")
print(nday2 + nday1)
print(nday2 - nday1)
print(nday4 - nday3)
print(nday3 + nday4)
# 在元素個數(shù)相同的情況下,可以進行數(shù)組間的加減
print("*****數(shù)組乘除*****")
print(nday2 * nday1)
print(nday2 // nday1)
print(nday4 * nday3)
print(nday4 // nday3)
# 在元素個數(shù)相同的情況下,可以進行數(shù)組間的乘除
print(nday1 * 3)
print(nday2 // 2)
print(nday3 * 2)
print(nday4 // 2)
# 對某個數(shù)進行的乘除,可以自動進行到所有元素


運行結(jié)果:

*****類型*****
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
*****數(shù)組*****
[1 2 3]
[1 2 3]
[0 1 2 3 4]
[5 6 7 8 9]
*****數(shù)組加減*****
[2 4 6]
[0 0 0]
[5 5 5 5 5]
[ 5  7  9 11 13]
*****數(shù)組乘除*****
[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 創(chuàng)建數(shù)組

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

接下來要說的是自動創(chuàng)建數(shù)組

1. 使用empty創(chuàng)建空數(shù)組

里面會有初始值,但是數(shù)組初始為None

#!/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)       # 創(chuàng)建一個長度為5的空數(shù)組
em2 = np.empty((2, 2))  # 創(chuàng)建一個2*2的空二維數(shù)組

print("一維數(shù)組,長度為5", em1)
print("二維數(shù)組,長度為2*2", em2)

輸出結(jié)果:

[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函數(shù)創(chuàng)建

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

先導入numpy包

import numpy as np

然后創(chuàng)建數(shù)組

print("*****ararge創(chuàng)建數(shù)組*****")

aran_arr1 = np.arange(5)
aran_arr2 = np.arange(5, 10)

print("*****類型*****")
print(type(aran_arr1))
print(type(aran_arr2))

print("*****數(shù)組*****")
print(aran_arr1)
print(aran_arr2)

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

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

看下面的例子:

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

#!/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)

運行結(jié)果:

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

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

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

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

輸出看看:

print(zero-arr3)

運行結(jié)果:

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

4. ones函數(shù)生成數(shù)組

使用ones函數(shù)生成全1函數(shù),方法同zeros

import numpy as np

ones_arr1 = np.ones(3)

輸出結(jié)果:

[1. 1. 1.]

生成一個三行三列的矩陣

import numpy as np

ones_arr2 = np.ones((3, 3))

輸出結(jié)果:

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

5. diag函數(shù)生成對角矩陣

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

函數(shù)參數(shù)是一個元祖

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

import numpy as np

diag_arr = np.diag((4, 3, 2, 1))

將diag_arr的輸出的結(jié)果為:

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

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

6. N維數(shù)組

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

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

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

代碼:

#!/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)

當然,二維數(shù)組也算是N維數(shù)組

2.3 訪問數(shù)組元素

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

看實例:

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])

輸出結(jié)果:

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

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

數(shù)組嘛,可以使用下標來獲取數(shù)組元素

import numpy as np

li1 = [1, 2, 3, 4]
gb2 = np.array(li1)
print(gb2[1])

輸出結(jié)果為:

2

當然,它是一個數(shù)組,你理所應當?shù)囊部梢允褂醚h(huán)語句來遍歷數(shù)組

三、了解矩陣

數(shù)組是數(shù)組,矩陣是矩陣。

數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),可以存儲多種數(shù)據(jù),可以有多維

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

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

先使用列表創(chuàng)建二維列表,然后再使用numpy的方法轉(zhuǎn)成矩陣,當然也有好幾中生成矩陣的方法

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]
 [5 6 7 8]]
矩陣在Python的類型: <class 'numpy.matrix'>
在numpy中的類型: int32

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

3.1 廣播

何為廣播,廣播就是能將你的東西發(fā)送到各個區(qū)域,一般在計算機中是將信息發(fā)送到局域網(wǎng)絡中的每個計算機中。

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

import numpy as np

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

輸出結(jié)果:

[10 20 30 40]

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

而不同維度的數(shù)組也可以這樣

#!/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)

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

二維數(shù)組中的一維數(shù)組的個數(shù)與一維數(shù)組的個數(shù)是相同的

運行結(jié)果:

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

以上就是python擴展庫numpy入門教程的詳細內(nèi)容,更多關(guān)于numpy庫入門的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • django restframework序列化字段校驗規(guī)則

    django restframework序列化字段校驗規(guī)則

    本文主要介紹了django restframework序列化字段校驗規(guī)則,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • python使用socket向客戶端發(fā)送數(shù)據(jù)的方法

    python使用socket向客戶端發(fā)送數(shù)據(jù)的方法

    這篇文章主要介紹了python使用socket向客戶端發(fā)送數(shù)據(jù)的方法,涉及Python使用socket實現(xiàn)數(shù)據(jù)通信的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • python中pandas操作apply返回多列的實現(xiàn)

    python中pandas操作apply返回多列的實現(xiàn)

    本文主要介紹了python中pandas操作apply返回多列的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Python之自動獲取公網(wǎng)IP的實例講解

    Python之自動獲取公網(wǎng)IP的實例講解

    下面小編就為大家?guī)硪黄狿ython之自動獲取公網(wǎng)IP的實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 使用Pandas操作Excel文件的技巧與方法分享

    使用Pandas操作Excel文件的技巧與方法分享

    今天接到一個需求,需要讀取excel,將其中兩列分別作為字典的key、value進行保存,怎么讀取excel呢,之前好像使用過Pandas,但是接觸不多,借此機會記錄一下學習的收獲,需要的朋友可以參考下
    2023-12-12
  • Python與CNN的碰撞詳解

    Python與CNN的碰撞詳解

    CNN,即卷積神經(jīng)網(wǎng)絡,主要用于圖像識別,分類。由輸入層,卷積層,池化層,全連接層(Affline層),Softmax層疊加而成。卷積神經(jīng)網(wǎng)絡中還有一個非常重要的結(jié)構(gòu):過濾器,它作用于層與層之間(卷積層與池化層),決定了怎樣對數(shù)據(jù)進行卷積和池化
    2022-12-12
  • 20個超實用Python自動化腳本分享

    20個超實用Python自動化腳本分享

    在當今的快節(jié)奏工作環(huán)境中,自動化不再是一種奢侈,而是提高效率和精確性的必需手段,這篇文章為大家整理了20個超實用Python自動化腳本,希望對大家有所幫助
    2024-01-01
  • Python7個爬蟲小案例詳解(附源碼)中篇

    Python7個爬蟲小案例詳解(附源碼)中篇

    這篇文章主要介紹了Python7個爬蟲小案例詳解(附源碼)中篇,本文章內(nèi)容詳細,通過案例可以更好的理解爬蟲的相關(guān)知識,七個例子分為了三部分,本次為中篇,共有二道題,需要的朋友可以參考下
    2023-01-01
  • Python判斷兩個list是否是父子集關(guān)系的實例

    Python判斷兩個list是否是父子集關(guān)系的實例

    今天小編就為大家分享一篇Python判斷兩個list是否是父子集關(guān)系的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python創(chuàng)建exe文件的實現(xiàn)步驟

    python創(chuàng)建exe文件的實現(xiàn)步驟

    本文主要介紹了python創(chuàng)建exe文件的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09

最新評論

陆河县| 通河县| 海宁市| 平陆县| 昌乐县| 吴江市| 平陆县| 墨竹工卡县| 平度市| 宜宾县| 正阳县| 桦南县| 平罗县| 诏安县| 盈江县| 武义县| 个旧市| 宁国市| 彭水| 淮南市| 富源县| 玉龙| 高淳县| 通河县| 张家界市| 安平县| 桦川县| 岳西县| 宁城县| 佳木斯市| 平安县| 辽宁省| 通城县| 丽江市| 延长县| 天柱县| 册亨县| 三台县| 汉阴县| 玛曲县| 纳雍县|