python - 沿任意维度切片 numpy 数组

标签 python numpy

假设我有一个 (40,20,30) numpy 数组,并且我有一个函数,在一些工作之后将沿着选定的输入轴返回输入数组的一半。有自动的方法吗?我想避免这样丑陋的代码:

def my_function(array,axis=0):

    ...

    if axis == 0:
        return array[:array.shape[0]/2,:,:] --> (20,20,30) array
    elif axis = 1:
        return array[:,:array.shape[1]/2,:] --> (40,10,30) array
    elif axis = 2: 
        return array[:,:,:array.shape[2]/2] --> (40,20,15) array

谢谢你的帮助

埃里克

最佳答案

我认为您可以为此使用 np.split [docs] , 并简单地获取返回的第一个或第二个元素,这取决于你想要哪个。例如:

>>> a = np.random.random((40,20,30))
>>> np.split(a, 2, axis=0)[0].shape
(20, 20, 30)
>>> np.split(a, 2, axis=1)[0].shape
(40, 10, 30)
>>> np.split(a, 2, axis=2)[0].shape
(40, 20, 15)
>>> (np.split(a, 2, axis=0)[0] == a[:a.shape[0]/2, :,:]).all()
True

关于python - 沿任意维度切片 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737798/

相关文章:

python - 在python中逐行复制文件

python - 如何删除 Jupyterlab 笔记本中的 In[ ] 和 Out[ ] 单元格标签?

python - 使用 5 的倍数作为变量可以更轻松地使用模数

python - python 中的正则表达式 : replace multiple occurrences of comma between double quotes

python - 在python中创建稀疏循环矩阵

python - python 分割数组

python - 如何在我的 Django 应用程序中连接两个 mysql 表

python - numpy 数组形状更改/扩展

python - 包含 vector 外积的方程

python - 将字典的内容导出到 m x n 矩阵