繁体   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