我需要编写一个从2D数组返回单行或单列的函数.函数的输入告诉我们要返回什么.
# 3x3 array with values 1 to 9
a = np.arange(1, 10).reshape(3,3)
rowCount, colCount = a.shape
# return last row [7, 8, 9]
a[rowCount - 1, :]
# return first row [1, 2, 3]
a[0, :]
# return last column [3, 6, 9]
a[:, lastCol]
# return first column [1, 4, 7]
a[:, 0]
如何在函数中执行此操作,以便该函数接收要返回的行或列?
就像这样,
def getSlice(slice):
return a[slice]
其中slice object是使用内置slice function创建的.
然而,我不知道如何为2D数组创建切片对象,因为slice
函数不接受像slice(0, :)
一样的冒号运算符.
另外,如果我事先不知道2D数组的形状,有没有办法表示"最后一行"或"最后一列"?
用例
下面是我为什么需要一个函数而不是直接使用a[:, 0]
表达式的几个用例:
- 调用方无权访问该array.调用方可以通过调用
getSlice
函数从数组中获取所需的行或列. - 需要预先配置首选的行或列.例如,
{a1: 'first row', a2: 'last column'}
.a1
和a2
都可能被多次移位和修改.但在任何时候,我都只对两个数组的配置行/列感兴趣.