如何使用布尔值和 Numpy Python 在元组中索引 ndarray?

How to index ndarray in tuple using boolean with Numpy Python?

我想使用 boolean masktuple 中索引 ndarray,如下所示

import numpy as np
n_max = 5
list_no = np.arange ( 0, n_max )
lateral = np.tril_indices ( n_max, -1 )
mask= np.diff ( lateral [0].astype ( int ) )
mask [-1] = 1
Expected=lateral[mask!= 0]

但是,当执行 Expected=lateral[mask!= 0] 行时, 编译器 return 一个错误

TypeError: only integer scalar arrays can be converted to a scalar index

Expected=
0 = {ndarray: (4,)} [1 2 3 4]
1 = {ndarray: (4,)} [0 1 2 3]

请问我哪里做错了?

所以看起来mask 和lateral[0] 的大小不一样。由于 mask 是数组中每个元素之间的差异,因此当 lateral[0] 的大小为 n 时,它的大小为 n-1。您可能想要附加到掩码数组。 此外,由于横向是一个元组,您需要在应用掩码之前对元组进行索引。

您可能需要这样的东西:

import numpy as np
n_max = 5
list_no = np.arange(0, n_max)
lateral = np.tril_indices(n_max, -1)
mask = np.diff(lateral[0].astype(int))
mask = np.append(mask, 1)
expected_0 = lateral[0][mask != 0]
print(expected_0)
expected_1 = lateral[1][mask != 0]
print(expected_1)