有没有办法从一维数组切割零维子阵列?
例如,如果我有一个N维ndarray
arr
,arr[0]
会返回一个(N-1)维ndarray
。
但是,如果我有一维ndarray
x
,x[0]
不会返回0维ndarray,而是返回numpy.int64
,(如果x
包含int64
s)。
最小例子:
def increment(zero_d_array):
zero_d_array[...] = zero_d_array + 1
counter = numpy.array(0) # a zero-dimensional array containing scalar 0
increment(counter) # success; counter is now 1
counters = numpy.zeros(3, dtype=int) # [0, 0, 0]
increment(counter[1]) # fails; counter[1] is a numpy.int64, not a 0-D array
我意识到上述内容适用于increment(counter[1:2])
,但仅仅因为increment()
恰好适用于0-D和1-D输入。并非所有功能都会如此灵活。
答案 0 :(得分:7)
使用省略号:
increment(counter[1, ...])