4

有没有办法从一维数组中分割一个零维子数组?

例如,如果我有一个 N 维ndarray arr,则arr[0]返回一个 (N-1) 维ndarray

但是,如果我有 1 维ndarray xx[0]则不会返回 0 维 ndarray,而是返回numpy.int64, (如果x包含int64s)。

最小的例子:

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 输入。并非所有功能都如此灵活。

4

1 回答 1

7

使用省略号:

increment(counter[1, ...])
于 2014-10-10T17:52:05.747 回答