python - 在 numpy 数组中查找切片的位置

标签 python numpy slice

我有一个 ndarray 子类,它实现了将一个或多个记录加载/保存到平面二进制文件中。加载记录后,我可以以正常的 NumPy 方式访问它们。

我的问题是当我切片结果(或者实际上,任何 NumPy 数组)时会发生什么。这通常会产生一个“ View ”,即。引用与父数组相同的缓冲区的数组。

一旦我有了这个 View ,有没有办法确定 View V 在数组 A 中的位置?更准确地说,我想知道 V 开始的字节偏移量(从 A 的数据缓冲区的开始)。这将允许我以正确的偏移量将切片写回磁盘。

这里有一些示例代码来说明情况:

# Imagine a as consisting of 4 4-byte records...
a = np.arange(16, dtype='B').reshape(4,4)

# I select the first record
v = a[0]

print (v)

# [0 1 2 3]

# I can determine that v is a subarray:

is_subarray = v.base != None

# I can determine which dimension the slice spans..

whichdim = v.base.strides.index (v.strides[-1])

# But not its position along that dimension.

最佳答案

信息是通过 array.__array_interface__ 公开的(也许还有更好的地方),但是我认为您应该首先使用内存映射而不是乱搞这个。例如,检查 np.may_share_memory 函数(或实际上是 np.byte_bounds)的 numpy 代码。

关于python - 在 numpy 数组中查找切片的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12421770/

相关文章:

python - 按月绘制 groupby 数据

python - SQLAlchemy 闭包表关系定义

python - 使用 numpy.loadtxt 导入数据 : No delimiters but fixed column width

python - 根据 pandas 数据框中特定列中的值提取列值

javascript - 只保留字符串中的数字,十进制数字除外

python - 循环 urllib 时“超出最大递归深度”

python - 使用 XLRD 包识别 Excel 工作表单元格颜色代码

python - 如何分割特征和标签

python - 如何根据不在索引中的日期对 Pandas 时间序列进行切片?

python - itertools.islice 实现——有效地切片列表