使用 __index__ 方法进行 numpy ndarray 索引

尼瑞欧斯

当使用自定义类实例作为索引时,我不明白 numpy ndarray 的索引是如何工作的。

我有以下代码:

import numpy as np

class MyClass:
    def __index__(self):
        return 1,2

foo = np.array([[1,2,3],[4,5,6]])
bar = MyClass()

print(foo[1,2])
print(foo[bar])

我希望从两个打印函数中得到相同的结果 (6)。但是从第二个使用类实例的索引开始,我收到一个错误:

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

如果我显式调用 __index__ 方法

print(foo[bar.__index__()])

有用。但这违背了魔法方法的目的。

如果我只使用一个索引调用数组,则一切正常:

import numpy as np

class MyClass:
    def __index__(self):
        return 1

foo = np.array([[1,2,3],[4,5,6]])
bar = MyClass()

print(foo[1])
print(foo[bar])

>>> [4 5 6]
>>> [4 5 6]

所以我没有得到:

  • ndarray 可以将 __index__ 方法的输出用于多个维度。显式调用时可见。
  • ndarray 确实 coll __index__ 方法。见第二个例子。
  • 但由于某种原因,这不能同时工作。为什么?

我错过了什么,还是 ndarray 不支持这种索引?


我只想补充一点, __index__ 方法如何输出其结果显然无关紧要。我试过了:

return a, b
return (a, b)
return tuple((a, b))

他们都没有为我工作。

X.W

正如这里提到的__index__方法Must return an integer.

这就是为什么您的尝试无效,而“一个索引”示例有效的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

需要使用`non-ndarray sequence`进行numpy基本索引的示例

来自分类Dev

numpy.ndarray 的索引

来自分类Dev

使用字符串作为Python中的切片索引?(TypeError:切片索引必须为整数或无,或具有__index__方法)

来自分类Dev

numpy ndarray索引-从元组检索索引

来自分类Dev

错误消息:无法使用 <class 'numpy.ndarray'> 的这些索引器 [[ 2]] 对 <class 'pandas.core.indexes.range.RangeIndex'> 进行切片索引

来自分类Dev

在 PyMC3 中使用 theano.scan 会导致 TypeError:切片索引必须是整数或无或具有 __index__ 方法

来自分类Dev

是否可以使用矢量方法移动存储在numpy ndarray中的图像以进行数据增强?

来自分类Dev

Python3 / Numpy:ndarray条件索引

来自分类Dev

切片索引必须为整数或无,或具有__index__方法

来自分类Dev

typeerror 切片索引必须是整数或无或具有 __index__ 方法

来自分类Dev

切片索引必须有一个 __index__ 方法

来自分类Dev

找到最大值及其索引以移动numpy ndarray的子数组的Python方法是什么?

来自分类Dev

通过动态生成的索引在numpy ndarray中建立索引

来自分类Dev

通过动态生成的索引在numpy ndarray中建立索引

来自分类Dev

Python __index__特殊方法

来自分类Dev

填写numpy的ndarray的最佳方法?

来自分类Dev

切片索引必须是整数或无或在 udacity 自动驾驶中有一个 __index__ 方法

来自分类Dev

类型错误:切片索引必须是整数或无或具有 __index__ 方法。如何解决?

来自分类Dev

如何修复“类型错误:切片索引必须是整数或无或具有 __index__ 方法”错误

来自分类Dev

如何使用索引向量对3D ndarray进行切片

来自分类Dev

如何使用索引向量对3D ndarray进行切片

来自分类Dev

按列索引切片numpy.ndarray

来自分类Dev

Python中的3维Numpy ndarray的高级索引

来自分类Dev

numpy索引ndarray [[4,2),(5,3)]的说明

来自分类Dev

按列索引切片numpy.ndarray

来自分类Dev

使用numpy的怪异索引

来自分类Dev

使用pandas或numpy进行时间序列数据索引

来自分类Dev

在NumPy中使用默认值进行ND索引

来自分类Dev

使用 Numpy 对多维数组进行切片/索引

Related 相关文章

  1. 1

    需要使用`non-ndarray sequence`进行numpy基本索引的示例

  2. 2

    numpy.ndarray 的索引

  3. 3

    使用字符串作为Python中的切片索引?(TypeError:切片索引必须为整数或无,或具有__index__方法)

  4. 4

    numpy ndarray索引-从元组检索索引

  5. 5

    错误消息:无法使用 <class 'numpy.ndarray'> 的这些索引器 [[ 2]] 对 <class 'pandas.core.indexes.range.RangeIndex'> 进行切片索引

  6. 6

    在 PyMC3 中使用 theano.scan 会导致 TypeError:切片索引必须是整数或无或具有 __index__ 方法

  7. 7

    是否可以使用矢量方法移动存储在numpy ndarray中的图像以进行数据增强?

  8. 8

    Python3 / Numpy:ndarray条件索引

  9. 9

    切片索引必须为整数或无,或具有__index__方法

  10. 10

    typeerror 切片索引必须是整数或无或具有 __index__ 方法

  11. 11

    切片索引必须有一个 __index__ 方法

  12. 12

    找到最大值及其索引以移动numpy ndarray的子数组的Python方法是什么?

  13. 13

    通过动态生成的索引在numpy ndarray中建立索引

  14. 14

    通过动态生成的索引在numpy ndarray中建立索引

  15. 15

    Python __index__特殊方法

  16. 16

    填写numpy的ndarray的最佳方法?

  17. 17

    切片索引必须是整数或无或在 udacity 自动驾驶中有一个 __index__ 方法

  18. 18

    类型错误:切片索引必须是整数或无或具有 __index__ 方法。如何解决?

  19. 19

    如何修复“类型错误:切片索引必须是整数或无或具有 __index__ 方法”错误

  20. 20

    如何使用索引向量对3D ndarray进行切片

  21. 21

    如何使用索引向量对3D ndarray进行切片

  22. 22

    按列索引切片numpy.ndarray

  23. 23

    Python中的3维Numpy ndarray的高级索引

  24. 24

    numpy索引ndarray [[4,2),(5,3)]的说明

  25. 25

    按列索引切片numpy.ndarray

  26. 26

    使用numpy的怪异索引

  27. 27

    使用pandas或numpy进行时间序列数据索引

  28. 28

    在NumPy中使用默认值进行ND索引

  29. 29

    使用 Numpy 对多维数组进行切片/索引

热门标签

归档