如何使用布尔值和 Numpy Python 在元组中索引 ndarray?
How to index ndarray in tuple using boolean with Numpy Python?
我想使用 boolean mask
在 tuple
中索引 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)
我想使用 boolean mask
在 tuple
中索引 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)