我想找到第一个数组元素的索引,它可以被一个数整除。然后我想用这个结果创建一个掩码数组。例如,考虑以下数组:
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值来做这个操作。有更好的(更快的)吗?)解决这个问题的方法?
1条答案
按热度按时间ovfsdjhp1#
关于获取索引,我唯一要改变的是如何从
np.where
中提取结果。它有已经排序的索引列表,所以你可以对于
arr_new
,您可能希望它是布尔数组而不是整数,因此可以设置dtype=bool
。一个改进是使用np.zeros_like
,所以你不需要告诉它arr
的大小。或者,您可以使用
np.full_like
,这可能会更清楚地传达您的意图。