python - numpy 切片返回最后两个维度

标签 python numpy slice

基本上,我正在寻找一个函数或语法,它允许我获取具有任意维数的 n 维 numpy 数组的最后两个维度的第一个“切片”。

我可以做到这一点,但它太丑陋了,无法忍受,如果有人发送 6d 数组怎么办?必须有一个像椭圆这样的 numpy 函数可以扩展为 0,0,0,... 而不是 :,:,:,...

data_2d = np.ones(5**2).reshape(5,5)
data_3d = np.ones(5**3).reshape(5,5,5)
data_4d = np.ones(5**4).reshape(5,5,5,5)

def get_last2d(data):
    if data.ndim == 2:
        return data[:]
    if data.ndim == 3:
        return data[0, :]
    if data.ndim == 4:
        return data[0, 0, :]

np.array_equal(get_last2d(data_3d), get_last2d(data_4d))

谢谢, 科林

最佳答案

这个怎么样,

def get_last2d(data):
    if data.ndim <= 2:
        return data
    slc = [0] * (data.ndim - 2)
    slc += [slice(None), slice(None)]
    return data[slc]

关于python - numpy 切片返回最后两个维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27111083/

相关文章:

go - 对于字符串 slice 的循环迭代不起作用

python - 调试 gdb pretty-print

python - 如何检查 tkinter 窗口是否存在?

python - 单击时无事件连接

python - 有人在 Cygwin 上安装 MySQLdb for Python 吗?

python - 将图像插入基材

Python:如何将一个数组中的元素与另一个数组中的列/行相乘

python - Google App Engine 上的 numpy 有哪些替代方案?

string - Go中的string和[]byte有什么区别?

python - Numpy - 从数组中切片二维行或列向量