python列表b中的逗号索引

2024-04-26 22:37:42 发布

您现在位置:Python中文网/ 问答频道 /正文

示例如下。这是什么?逗号在python列表括号中。我怎么能理解?在

id(x[i,j]) == id(x[i][j])显示True。在

所以,x[i,j]x[i][j]总是相同的?在

或者,x[i,j]实际上与x[(i,j)]相同?索引是元组。在

import numpy as np
x = np.random.random((64,3,32,10))
for i in range(x.shape[0]):
    for j in range(x.shape[1]):
        print(x[i,j])

=======
我猜 这是numpy的特殊实现。Numpy重写“\u getitem\uu”函数以使用元组索引。在

我试了
1) 基本python
2) 覆盖“\u getitem\uu”并
3) 基本的裸体。在

1)显示错误。“类型错误:列表索引必须是整数或切片,而不是元组“
2) 有…如果我执行正确,没有问题。
3) 只是效果很好。在

所以,我想numpy开发人员确实为tuple实现了他们的“getitem”函数,它的工作原理是相同的arr[x,y,z]==arr[x][y][z]。在


Tags: 函数innumpyid列表for错误np
2条回答

虽然numpy和这两个的行为方式相同,但它们在技术上是不同的。在

您可以通过自己实现__getitem__来看到区别:

class GetitemTest(object):
    def __getitem__(self, item):
        print("getting: %r" %(item, ))
        return self

然后:

^{pr2}$

请注意,x[1,2]只调用__getitem__一次,而{}调用了两次。在

这是Numpy的特殊能力。
Numpy official docs
与列表和元组不同,numpy数组支持多维数组的多维索引。这意味着没有必要将每个维度的索引分隔为自己的一组方括号。”

>>> x.shape = (2,5) # now x is 2-dimensional
>>> x[1,3]
8
>>> x[1,-1]
9

相关问题 更多 >