Python 大矩阵中numpy子矩阵的差异指数

Python 大矩阵中numpy子矩阵的差异指数,python,numpy,Python,Numpy,我有一个numpy矩阵a和a的子矩阵b。是否有可能通过b获取索引中与i,j-th元素相对应的a索引 import numpy as np a = np.arange(10) b = a[3:] b[2] == a[5] ^^^^ 我如何系统地得到这个5?b是否将某些方法公开给“取消引用”索引 编辑:我发现使用np.where(a==b[2])不令人满意:它涉及遍历所有a。我本以为b中有一些信息,可以在a中的I-th元素的哪里找到它。是这样吗 In [58]: a = np.ar

我有一个numpy矩阵
a
a
的子矩阵
b
。是否有可能通过
b
获取索引中与
i,j
-th元素相对应的
a
索引

import numpy as np
a = np.arange(10)
b = a[3:]
b[2] == a[5]
        ^^^^
我如何系统地得到这个5?
b
是否将某些方法公开给“取消引用”索引

编辑:我发现使用
np.where(a==b[2])
不令人满意:它涉及遍历所有
a
。我本以为
b
中有一些信息,可以在
a
中的
I
-th元素的哪里找到它。是这样吗

In [58]: a = np.arange(10)
In [59]: b = a[3:]
可以通过以下方式查看阵列的基本信息:

In [60]: a.__array_interface__
Out[60]: 
{'data': (46666800, False),
 'strides': None,
 'descr': [('', '<i8')],
 'typestr': '<i8',
 'shape': (10,),
 'version': 3}
b
还有一个
base
属性:

In [62]: b.base
Out[62]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [63]: b
Out[63]: array([3, 4, 5, 6, 7, 8, 9])
理论上,您可以通过比较
\uuu数组\u接口\uuu['data'][0]
值来推断
b
a
之间的偏移量,但是没有一个公开可用的函数或方法可以做到这一点,我也不确定它的一般用途

一个更一般的视图示例:

In [64]: a[9:2:-2]
Out[64]: array([9, 7, 5, 3])
In [65]: a[9:2:-2].__array_interface__
Out[65]: 
{'data': (46666872, False),    # different
 'strides': (-16,),            # different
 'descr': [('', '<i8')],
 'typestr': '<i8',
 'shape': (4,),                # different
 'version': 3}
[64]中的
a[9:2:-2]
Out[64]:数组([9,7,5,3])
在[65]:一个[9:2:-2]。\u数组\u接口__
出[65]:
{'data':(46666872,假),#不同
“步幅”:(16,),#不同

‘descr’:[(“”,’你的意思是
np.where(a==b[2])
?@anky这涉及到遍历数组
a
,但我假设
b
存储与
a
相关的信息
b
是一个numpy数组,就像
a
一样。它不存储额外的信息,除非间接地引用共享数据缓冲区。您必须使用自己的k根据您创建
b
的方式进行确认。
In [64]: a[9:2:-2]
Out[64]: array([9, 7, 5, 3])
In [65]: a[9:2:-2].__array_interface__
Out[65]: 
{'data': (46666872, False),    # different
 'strides': (-16,),            # different
 'descr': [('', '<i8')],
 'typestr': '<i8',
 'shape': (4,),                # different
 'version': 3}