国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 創(chuàng)建二維數(shù)組

這篇具有很好參考價值的文章主要介紹了Python 創(chuàng)建二維數(shù)組。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一. 創(chuàng)建二維數(shù)組遇到的問題

List (列表)是 Python 中最基本的數(shù)據(jù)結(jié)構(gòu)。在用法上,它有點(diǎn)類似數(shù)組,因為每個列表都有一個下標(biāo),下標(biāo)從 0 開始。因此,我們可以使用 list[1] 來獲取下標(biāo)對應(yīng)的值。如果我們深入下列表的底層原理,會發(fā)現(xiàn)列表是基于 PyListObject 實現(xiàn)的。PyListObject 是一個變長對象,所以列表的長度是隨著元素多少動態(tài)改變的。同時它還支持插入和刪除等操作,所以它還是一個可變對象。

1. 列表能創(chuàng)建多維數(shù)組?

列表是支持操作符,如果一個列表與 ‘ * ’ 號結(jié)合使用,能達(dá)到重復(fù)列表的效果,比如:

list_one = [0]
list_two = [0] * 3
print(list_one)
print(list_two)

>>> 運(yùn)行結(jié)果:

[0]
[0, 0, 0]

那么利用這個重復(fù)特性,我們是否可以來創(chuàng)建一個二維數(shù)組呢?于是乎,我進(jìn)行一頓猛操作,結(jié)果就被我折騰出來了。

list_one = [0]
list_two = [[0] * 3] * 3
print(list_one)
print(list_two)

>>> 運(yùn)行結(jié)果:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

看起來很完美的操作,但是如果進(jìn)行一些列表更新操作,問題就顯露出來了。比如我對 list_two 的更換中間位置的值,即對 list_two[1][1] 進(jìn)行更換值。

list_two = [[0] * 3] * 3
print(list_two)

list_two[1][1] = 2
print(list_two)

不難發(fā)現(xiàn),運(yùn)行結(jié)果有點(diǎn)不對勁,列表中有三個位置的值也改變了。

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 2, 0], [0, 2, 0], [0, 2, 0]]

為什么會出現(xiàn)在這種情況呢?原因是淺拷貝,我們以這種方式創(chuàng)建的列表,list_two 里面的三個列表的內(nèi)存是指向同一塊,不管我們修改哪個列表,其他兩個列表也會跟著改變。

二. 解決:使用列表創(chuàng)建一個二維數(shù)組,可以使用生成器來輔助實現(xiàn)

list_three = [[0 for i in range(3)] for j in range(3)]
print(list_three)
list_three[1][1] = 3
print(list_three)

對 list_three 進(jìn)行更新操作,這次就能正常更新了。

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [0, 3, 0], [0, 0, 0]]

除了以上的方式,還有一種更加簡潔方便的方式,就是使用 NumPy 模塊。

三. 解決:相比 List,NumPy 數(shù)組的優(yōu)勢

NumPy 全稱為 Numerical Python,是 Python 的一個以矩陣為主的用于科學(xué)計算的基礎(chǔ)軟件包。NumPy 和 Pandas、Matpotlib 經(jīng)常結(jié)合一起使用,所以被人們合稱為數(shù)據(jù)分析三劍客。Numpy 中有功能強(qiáng)大的 ndarray 對象,能創(chuàng)建 N 維的數(shù)組,另外還提供很多通用函數(shù),支持對數(shù)組的元素進(jìn)行操作、支持對數(shù)組進(jìn)行算法運(yùn)算以及提供常用的統(tǒng)計函數(shù)。

相比 List 對象,NumPy 數(shù)組有以下優(yōu)勢:

  1. 這是因為列表 list 的元素在系統(tǒng)內(nèi)存中是分散存儲的,而 NumPy 數(shù)組存儲在一個均勻連續(xù)的內(nèi)存塊中。這樣數(shù)組計算遍歷所有元素,不像列表 list 還需要對內(nèi)存地址進(jìn)行查找,從而節(jié)省了計算資源。
  2. Numpy數(shù)組能夠運(yùn)用向量化運(yùn)算來處理整個數(shù)組,速度較快;而 Python 的列表則通常需要借助循環(huán)語句遍歷列表,運(yùn)行效率相對來說要差。
  3. NumPy 中的矩陣計算可以采用多線程的方式,充分利用多核 CPU 計算資源,大大提升了計算效率。
  4. Numpy 使用了優(yōu)化過的C語言的 API,運(yùn)算速度較快。
1. 創(chuàng)建數(shù)組

前面說到 NumPy 的主要對面是 ndarray 對象,它其實是一系列同類型數(shù)據(jù)的集合。因為 ndarray 支持創(chuàng)建多維數(shù)組,所以就有兩個行和列的概念。

創(chuàng)建 ndarray 的第一種方式是利用 array 方式:

import numpy as np
# 創(chuàng)建一維數(shù)組
nd_one = np.array([1, 2, 3])
# 創(chuàng)建二維數(shù)組
nd_two = np.array([[1, 2, 3], [4, 5, 6]])

print(nd_one)
print(nd_two)
print('nd_two.shape =', nd_one.shape)
print('nd_two.shape =', nd_two.shape)

>>> 運(yùn)行結(jié)果:

[1 2 3]
[[1 2 3]
 [4 5 6]]
nd_two.shape = (3,)
nd_two.shape = (2, 3)

其中 shape 是數(shù)組的一個屬性,表示獲取數(shù)組大小(有多少行,有多少列),如果是一維數(shù)組,則只顯示(行,)。代碼中打印出 nd_two 的形狀,輸出為(2,3),表示數(shù)組中有 2 行 3 列。

2. 第二種辦法則使用 Numpy 的內(nèi)置函數(shù)
2.1 1 使用arange 或 linspace 創(chuàng)建連續(xù)數(shù)組。
```python
import numpy as np
# arange() 類似Python內(nèi)置函數(shù)的 range()
# arange(初始值, 終值, 步長) 不包含終值
x0 = np.arange(1, 11, 2)
print(x0)

# 創(chuàng)建一個 5x3 的數(shù)組
x1 = np.arange(15).reshape((5, 3))
print(x1)

# linspace()線性等分向量
# linspace(初始值, 終值, 元素個數(shù)) 包含終值
x2 = np.linspace(1, 11, 6)
print(x2)

>>> 運(yùn)行結(jié)果:

[1 3 5 7 9]

[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]]

[  1.   3.   5.   7.   9.  11.]

雖然 np.arange 和 np.linspace 起到的作用是一樣的,都是創(chuàng)建等差數(shù)組,但是創(chuàng)建的方式是不同的。

2. 使用 zeros(),ones(),full() 創(chuàng)建數(shù)組
import numpy as np
# 創(chuàng)建一個 3x4 的數(shù)組且所有值全為 0
x3 = np.zeros((3, 4), dtype=int)
print(x3)
# 創(chuàng)建一個 3x4 的數(shù)組且所有元素值全為 1
x4 = np.ones((3, 4), dtype=int)
print(x4)
# 創(chuàng)建一個 3x4 的數(shù)組,然后將所有元素的值填充為 2
x5 = np.full((3, 4), 2, dtype=int)
print(x5)

>>> 運(yùn)行結(jié)果:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]
3. 使用 eye() 創(chuàng)建單位矩陣

eye() 創(chuàng)建的數(shù)組特點(diǎn)是行數(shù)和列數(shù)都是一樣。因為它創(chuàng)建出來的是單位矩陣,單位矩陣是正形矩陣,對角線的值均為 1,其他位置的值為 0。

import numpy as np
# 創(chuàng)建 3x3 的單位矩陣
x6 = np.eye(3, dtype=int)
print(x6)

>>> 運(yùn)行結(jié)果:

[[1 0 0]
 [0 1 0]
 [0 0 1]]
4. 使用 diag() 創(chuàng)建對角矩陣

diag() 是創(chuàng)建一個 NxN 的對角矩陣,對角矩陣是對角線上的主對角線之外的元素皆為 0 的矩陣。

import numpy as np
x7 = np.diag([1, 2, 3])
print(x7)

>>> 運(yùn)行結(jié)果:

[[1 0 0]
 [0 2 0]
 [0 0 3]]
5. 使用 random 創(chuàng)建隨機(jī)數(shù)組

numpy 中的 random 中有很多內(nèi)置函數(shù),能簡單介紹其中的幾種。

import numpy as np
# 創(chuàng)建 2x2 數(shù)組且所有值是隨機(jī)填充
x9 = np.random.random((2, 2))
print(x9)

# 創(chuàng)建一個值在 [0, 10) 區(qū)間的 3x3 的隨機(jī)整數(shù)
x10 = np.random.randint(0, 10, (3, 3))
print(x10)

>>> 運(yùn)行結(jié)果:

[[ 0.77233522  0.41516417]
 [ 0.22350126  0.31611254]]

[[0 6 5]
 [7 6 4]
 [5 5 9]]

四. 總結(jié)

Python 創(chuàng)建一個二維列表

1. 空二維列表
lis=[[] for i in range(5)]

for i in range(5):
	lis.append([])

Python 創(chuàng)建二維數(shù)組

2. 普通二維列表
lis=[[i for i in range(5)] for i in range(5)]
print(lis)

tis=[]
for i in range(5):
    tis.append([])
    for j in range(5):
        tis[i].append(j)
print(tis)

Python 創(chuàng)建二維數(shù)組
Python 創(chuàng)建二維數(shù)組文章來源地址http://www.zghlxwxcb.cn/news/detail-494261.html

五. 參考鏈接

  1. Python創(chuàng)建二維數(shù)組的正確姿勢
  2. Python 創(chuàng)建一個二維列表

到了這里,關(guān)于Python 創(chuàng)建二維數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Python基礎(chǔ)】二維數(shù)組 (也叫矩陣)取值 示例~~~

    【Python基礎(chǔ)】二維數(shù)組 (也叫矩陣)取值 示例~~~

    ? “忠誠的意義在于我們不應(yīng)該忘記愛過的每一個人?!?? ? ??作者主頁: 追光者♂?? ???????? ??個人簡介: ? ??[1] 計算機(jī)專業(yè)碩士研究生?? ? ??[2] 2023年城市之星領(lǐng)跑者TOP1(哈爾濱)?? ? ??[3] 2022年度博客之星人工智能領(lǐng)域TOP4?? ? ??[4] 阿里云社區(qū)特邀專家博

    2024年02月12日
    瀏覽(31)
  • 力扣:62. 不同路徑(動態(tài)規(guī)劃,附python二維數(shù)組的定義)

    力扣:62. 不同路徑(動態(tài)規(guī)劃,附python二維數(shù)組的定義)

    一個機(jī)器人位于一個 m x n 網(wǎng)格的左上角 (起始點(diǎn)在下圖中標(biāo)記為 “Start” )。 機(jī)器人每次只能向下或者向右移動一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為 “Finish” )。 問總共有多少條不同的路徑? 示例 1: 輸入:m = 3, n = 7 輸出:28 示例 2: 輸入:m = 3, n

    2024年02月03日
    瀏覽(21)
  • Python中二維數(shù)據(jù)(數(shù)組、列表)索引和切片的Bug

    Python中二維數(shù)據(jù)(數(shù)組、列表)索引和切片的Bug

    對于一維數(shù)據(jù)進(jìn)行索引和切片操作,大家都比較熟悉通過下面代碼進(jìn)行實現(xiàn) 對于一維列表元組等相關(guān)結(jié)果的索引和切片操作,與一維數(shù)組類似 對于二維數(shù)據(jù)的索引和切片就有一些需要注意的事項了,如果一不小心可能會出現(xiàn)意料之外的Bug 上面就是二維數(shù)組索引和切片的大部

    2024年01月20日
    瀏覽(24)
  • QT調(diào)用python傳遞圖像和二維數(shù)組,并接受python返回值(圖像)

    QT調(diào)用python傳遞圖像和二維數(shù)組,并接受python返回值(圖像)

    用QT調(diào)用python代碼,將QT讀取的圖像(Mat矩陣)作為參數(shù)傳入python中,將QT的二維數(shù)組作為參數(shù)傳遞給python,python接收QT傳入的圖像進(jìn)行計算,將結(jié)果返回給QT。 1.新建QT項目 說明:QT的編譯環(huán)境我使用的MinGW 64,編譯的release包 (1)按照下圖依次選擇Application,Qt Widgets Application, 然

    2024年02月09日
    瀏覽(46)
  • Python獲取二維數(shù)組(矩陣)第二列值與最大值

    對于二維數(shù)組(矩陣)的應(yīng)用有多廣與多重要,怎么研究都不為過,突然想獲取其中最大的一組值,發(fā)現(xiàn)max返回的是第一列最大值的這組數(shù),如何獲得第二列最大的這組數(shù)呢? 比如: A=[[1, 2], [12, 22], [22, 5], [22, 50], [122, 50], [330, 3], [4, 400], [34, 56], [3, 44]] 如果max(A),返回的是[330, 3

    2024年02月06日
    瀏覽(28)
  • python 創(chuàng)建數(shù)組的方法

    python 創(chuàng)建數(shù)組的方法

    ? 數(shù)組是一個集合,它把一個對象放在集合的某個位置。數(shù)組可以存放一個或多個對象,每個對象都是一個數(shù)組。在 python中,我們可以使用 new創(chuàng)建一個數(shù)組,然后對其進(jìn)行操作。 下面來看看如何創(chuàng)建一個簡單的數(shù)組吧。 首先我們要創(chuàng)建一個新的數(shù)組,我們在定義元素

    2023年04月09日
    瀏覽(10)
  • Python 數(shù)組和列表:創(chuàng)建、訪問、添加和刪除數(shù)組元素

    Python 數(shù)組和列表:創(chuàng)建、訪問、添加和刪除數(shù)組元素

    Python 沒有內(nèi)置支持?jǐn)?shù)組,但可以使用 Python 列表來代替。 本頁將向您展示如何使用列表作為數(shù)組,但要在 Python 中使用數(shù)組,您需要導(dǎo)入一個庫,比如 NumPy 庫。數(shù)組用于在一個變量中存儲多個值: 示例,創(chuàng)建一個包含汽車名稱的數(shù)組: 數(shù)組是一種特殊的變量,可以同時保存

    2024年02月08日
    瀏覽(28)
  • chatgpt賦能python:Python如何創(chuàng)建一個空數(shù)組?

    在Python中,數(shù)組是一種常見的數(shù)據(jù)結(jié)構(gòu),用于存儲一系列的值。創(chuàng)建一個空數(shù)組是一項基本操作,本文將介紹Python中如何創(chuàng)建一個空數(shù)組。 數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它可以存儲一系列的值。Python中的數(shù)組可以存儲不同類型的數(shù)據(jù),例如數(shù)字、字符串、布爾值等。數(shù)組可以通過索

    2024年02月12日
    瀏覽(25)
  • Python numpy - 數(shù)組的創(chuàng)建與訪問

    Python numpy - 數(shù)組的創(chuàng)建與訪問

    目錄 一 數(shù)組array的創(chuàng)建途徑 1? 列表list? 2?函數(shù)array? 3 函數(shù)arange 4?函數(shù)zeros 5?函數(shù)eyes 6 隨機(jī)函數(shù)randn/?randint 二 數(shù)組array的訪問? 1 訪問形狀/元素個數(shù)/數(shù)據(jù)類型 ?2 訪問一維數(shù)組的位置/范圍 3 訪問二維數(shù)組的位置/范圍 4 用:訪問二維數(shù)組的切片 生成數(shù)組的常用途徑 list列表

    2024年02月07日
    瀏覽(26)
  • Python Numpy入門基礎(chǔ)(一)創(chuàng)建數(shù)組

    Python Numpy入門基礎(chǔ)(一)創(chuàng)建數(shù)組

    1- np.array() 參數(shù)眾多,初學(xué)時只要關(guān)注基本用法。 元組、列表轉(zhuǎn)換 內(nèi)置函數(shù) range() 數(shù)組副本copy,開辟一塊新內(nèi)存復(fù)制原數(shù)組 主要參數(shù): dtype=? ? ?數(shù)組元素的數(shù)據(jù)類型,可選 copy=? ? ? 對象是否需要復(fù)制,可選 order=? ? ?創(chuàng)建數(shù)組的樣式,C為行方向,F(xiàn)為列方向,A為任意方

    2024年02月14日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包