簡體   English   中英

試圖理解 Python 中的 [ ]

[英]Trying to understand the [ ] in Python

我學習了Python,看到了下面的代碼。 這段代碼是指:創建一個包含 0 到 1 之間的 100 個隨機值的數組。此外,確定索引可被 2 整除的所有條目中最大值的條目的值。

var1 = numpy.random.uniform(0, 1, 100)

var2 = numpy.arange(0, 100, 2)

var3 = var1[var2]

print(var3[numpy.argmin(var3)])

但是,我並不完全理解代碼的第 2 行和第 3 行。 有人可以澄清一下嗎? 為什么我們要創建第 2 行? var1[var2]是什么意思?

先感謝您。

var3 = var1[var2] 表示您正在從 object 中獲取兩個值並將其引用到與此相同的變量 3:第 2 行:

var2 = numpy.arange(0, 100, 2)

創建一個從 0 到 100 的數組,每個數組相差兩個。

import numpy as bumpy var2 = numpy.arange(0, 100, 2) print(var2) The Output of the code will be: import numpy as numpy var2 = numpy.arange(0, 100, 2) [0,2,4 ,6,8,10,12,14,16,18.......................,98]

您可以使用 del 語句刪除對編號 object 的引用。 del 語句的語法是 -

del var1[,var2[,var3[....,varN]]]]

您可以使用 del 語句刪除單個 object 或多個對象。

當您創建 class 時,您可以定義

def __getitem__(self, key):
    ...

如你所願。 Numpy 數組也覆蓋了getitem方法,有幾種方法可以使用它。

在 np.array[np.array] 的情況下,第二個數組包含索引,我們從第一個數組中選擇(這里 - 每個第二個元素)。

所以首先你必須了解np.arrange()是做什么的?

=> np.arrange()是基於數值范圍的數組創建例程之一。 它創建了一個具有均勻間隔值的ndarray實例並返回它的引用。

語法:numpy.arange([start, ]stop, [step, ], dtype=None) -> numpy.ndarray

  1. 前三個參數確定值的范圍,而第四個參數指定元素的類型:

  2. Start 是定義數組中第一個值的數字(整數或小數)。

  3. Stop 是定義數組結尾且不包含在數組中的數字。

  4. 步長是定義數組中每兩個連續值之間的間距(差異)的數字,默認為 1。

  5. dtype 是 output 數組元素的類型,默認為 None。

現在,如果我們查看第 2 行的代碼:

var2 = numpy.arange(0, 100, 2)

>>> np.arange(start=0, stop=100, step=2)
array([0, 2 , 4)

在這個例子中, start 是 0。因此,得到的數組的第一個元素是 0。 step 是 2,這就是為什么你的第二個值是 0+2,即 2,而數組中的第三個值是 2+2 ,等於 4。

它將 go 直到達到 100 即“停止”。

然后讓 go 在第三條語句:

var3 = var1[var2]

它說它是 list_of_values[index_in_array]

如果您仍然有任何疑問,請隨時詢問我一定會嘗試解決它。

抱歉,遲到的回復 var 2 代表索引數組,其中包含 0-100 的偶數,並且在代碼中它們在var1中傳遞了var2

var3 = var1[var2]

上面的語句說,當我們運行代碼時,var 2 的值將在 var1 中的特定索引處檢查,如果我們找到了 vale,那么它將在 var3 中傳遞。

讓我們通過例子來理解:

假設var2中的第一個值是 1 即索引,因此它將檢查var1中索引 1 處的值,如果找到它會將其返回到新數組,即var3

希望您能理解它,但如果有任何疑問,您可以隨時從我這里解決。

在這種情況下,方括號指的是列表 var1 中的索引。 例如,如果我有列表nums = [0, 1, 5, 4, 2]print(nums[2])將產生 5 的 output。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM