numpy 找到第一个数组元素可被一个数整除的索引

um6iljoc  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(107)

我想找到第一个数组元素的索引,它可以被一个数整除。然后我想用这个结果创建一个掩码数组。例如,考虑以下数组:

arr = np.array([19,49,79,109,139,169,199,229])

假设我想要一个能被7整除的数字,我想得到索引1并使用它来创建数组:

[0 1 0 0 0 0 0 0]

目前,我有

import numpy as np

arr = np.array([19,49,79,109,139,169,199,229])
x = 7
index = np.array([np.where(arr % x == 0)]).min()
arr_new =  np.zeros(arr.size, dtype=int)
arr_new[index] = 1
print(arr_new)

这是可行的,但是我必须在大规模上,用很多x值来做这个操作。有更好的(更快的)吗?)解决这个问题的方法?

ovfsdjhp

ovfsdjhp1#

关于获取索引,我唯一要改变的是如何从np.where中提取结果。它有已经排序的索引列表,所以你可以

index = np.where(arr % x == 0)[0][0]

对于arr_new,您可能希望它是布尔数组而不是整数,因此可以设置dtype=bool。一个改进是使用np.zeros_like,所以你不需要告诉它arr的大小。

arr_new = np.zeros_like(arr, dtype=bool)

或者,您可以使用np.full_like,这可能会更清楚地传达您的意图。

arr_new = np.full_like(arr, False)

相关问题