python - 从 numpy 数组获取范围/切片另一个数组的大小

标签 python python-3.x numpy tuples slice

我有两个 numpy 数组,一个比另一个大,但都具有相同的维数。

我想从较大的数组中获取与较小数组的大小相匹配的切片。 (从 0,0,0.... 开始)

因此,假设大数组的形状为 (10,5,7)。
小数组的形状为 (10,4,6)。

我想从更大的数组中获取这个切片:

biggerArray[:10,:4,:6]  

形状元组的长度可能会有所不同,我想对任意数量的维度执行此操作(两者将始终具有相同的维度数量)。

该怎么做?有没有一种方法可以将元组用作切片中的范围?

最佳答案

手动构造 slice 对象的元组。 biggerArray[:10, :4, :6]biggerArray[(slice(10), slice(4), slice(6))] 的语法糖,所以:

biggerArray[tuple(map(slice, smallerArray.shape))]

biggerArray[tuple(slice(0, n) for n in smallerArray.shape)]

您可能想在之后断言 result.shape == smallerArray.shape,以防输入的形状与您想象的不一样。

关于python - 从 numpy 数组获取范围/切片另一个数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46008209/

相关文章:

python - python 将每个句子的第一个字母大写

arrays - 用于进行数组计算的 Pythonic 算法

python - 使用步幅填充 numpy 滚动窗口操作

Python + Scrapy + JSON + XPath : How to scrape JSON data with Scrapy

python - 如何在Python中实现描述符

python - 重置 tensorflow 优化器

python - 在 Python 中单击按钮时隐藏标签

python - 在python中将概率向量转换为目标向量?

python - 并发.futures.ThreadPoolExecutor.map() : timeout not working

python - 根据文本将值从一个数据帧平均分配到另一个数据帧