python - 访问 Numpy 数组中中间四个元素的最快方法?

标签 python arrays numpy

假设我有一个 Numpy 数组,例如

rand = np.random.randn(6, 6)

我需要数组中间的四个值,因为它的轴长度是偶数。如果它是奇数,比如 5 x 5,那么就只有一个中心值。检索这四个条目的最简单/最快/最容易的方法是什么?我可以使用索引非常粗略地获得它们,但我正在寻找一种比调用一堆函数和执行一堆计算更快的方法。

例如,考虑以下内容:

array([[ 0.25659355, -0.75456113,  0.39467396,  0.50805361],
       [-0.77218172,  1.00016061, -0.70389486,  1.67632146],
       [-0.41106158, -0.63757421,  1.70390504, -0.79073362],
       [-0.2016959 ,  0.55316318, -1.55280823,  0.45740193]])

我想要以下内容:

array([[1.00016061, -0.70389486],
       [-0.63757421,  1.70390504]])

但不仅仅是 4 x 4 数组 - 如果它是偶数,我想要中间的四个元素,如上所述。

最佳答案

这样的事情是不是太复杂了?

def get_middle(arr):
    n = arr.shape[0] / 2.0
    n_int = int(n)
    if n % 2 == 1:
        return arr[[n_int], [n_int]]
    else:
        return arr[n_int:n_int + 2, n_int:n_int + 2]

关于python - 访问 Numpy 数组中中间四个元素的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36318806/

相关文章:

python - 无法对谷歌数据存储应用投影查询。错误 : No matching index found

python - 如何在 python 中将 2d 列表分成两个单独的列表?

python - 使用 numpy 的 k 最近邻分类器

python - np.savetxt 和多个数组

python - 使用 Selenium 和 Firefox 版本 40,如何下载文件?

Python线程在单个核心上执行

python - 在python中 float 为整数

python - 迭代 numpy 数组以获取子数组

ios - 如何检查两个数组中是否存在公共(public)值 - 在 SWIFT 中?

python - 与 Scipy : shifted identity kernel - how is the computation done? 的图像卷积