如果同一索引的第三个 np.array 的元素为零,如何从另一个 np.array 创建一个 np.array?

How to create an np.array from another np.array if the element of a third np.array of the same index is zero?

假设我有

a = np.array([0, 1, 3, 0])
b = np.array([[4,5],[7,8],[9,5],[8,2]])

如何创建第三个数组

c = [[4,5],[8,2]]

具有list理解力?

c = np.array([b[i] for i in range(len(b)) if a[i] == 0])

请注意,最好(也是最快)的方法是不使用列表理解,而是使用布尔索引:

c = b[a==0]

如果你想使用列表理解,除了,你可以使用zip,这在你必须同时经历多个迭代时很有用(在这种情况下, ab):

c = np.array([b_d for (b_d, a_d) in zip(b, a) if a_d == 0])

当您想遍历元素并获取每个元素的索引时,enumeraterange(len(iterable)) 更干净(尽管不一定更快):

c = np.array([b_d for i,b_d in enumerate(b) if a[i] == 0])