【问题标题】:Getting last elements along an axis in numpy array在numpy数组中沿轴获取最后一个元素
【发布时间】:2020-08-01 11:18:47
【问题描述】:

我需要一个函数来获取 numpy 数组中沿轴的最后一个元素。

例如,如果我有一个数组,

a = np.array([1, 2, 3])

函数应该像这样工作

get_last_elements(a, axis=0)
>>> [3]
get_last_elements(a, axis=1)
>>> [1, 2, 3]

这个函数也需要对多维数组起作用:

b = np.array([[1, 2],
              [3, 4]])

get_last_elements(b, axis=0)
>>> [[2],
     [4]]
get_last_elements(b, axis=1)
>>> [3, 4]

有人有实现它的好主意吗?

【问题讨论】:

  • 您确定要get_last_elements(a, axis=1) 用于第一个示例吗?因为a 的形状是(3,),而不是(1, 3)
  • 请发布您的尝试。
  • 是的。我要那个。但是,也许我可以使用 X = np.reshape(X,(1, X.size)) 或其他方式轻松地将 1d 数组转换为 2d。
  • np.take 可能有用。 np.atleast_2d 在处理一维输入时可能会有所帮助。

标签: python arrays numpy numpy-ndarray numpy-slicing


【解决方案1】:

您可以使用np.take 来获取:

def get_last_elements(a, axis=0):
  shape = list(a.shape)
  shape[axis] = 1
  return np.take(a,-1,axis=axis).reshape(tuple(shape))

输出:

print(get_last_elements(b, axis=0))
[[3 4]]

print(get_last_elements(b, axis=1))
[[2]
 [4]]

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2018-04-18
    相关资源
    最近更新 更多