示例如下。这是什么?逗号在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]。在
虽然numpy和这两个的行为方式相同,但它们在技术上是不同的。在
您可以通过自己实现
__getitem__
来看到区别:然后:
^{pr2}$请注意,}调用了两次。在
x[1,2]
只调用__getitem__
一次,而{这是Numpy的特殊能力。
Numpy official docs
与列表和元组不同,numpy数组支持多维数组的多维索引。这意味着没有必要将每个维度的索引分隔为自己的一组方括号。”
相关问题 更多 >
编程相关推荐