假设我有两个numpy数组。第一个将始终包含ONLYTrue或False值。第二个可能包含True或False**,也可能包含numpy.NaN。我想合并两个数组,这样如果第二个数组没有True或False值(它的值是numpy.NaN),它将从第一个数组的同一位置获取值,否则,它将获取True或False值。困惑?太好了!以下是一些示例:
# example 1
a1 = np.array([True, False, True, False, True], dtype=object)
a2 = np.array([np.NaN, np.NaN, np.NaN, np.NaN, np.NaN], dtype=object)
output = a1.combinaficate(a2)
# prints [True, False, True, False, True]
# example 2
a1 = np.array([True, False, True, False, True], dtype=object)
a2 = np.array([np.NaN, True, np.NaN, False, np.NaN], dtype=object)
output = a1.combinaficate(a2)
# prints [True, True, True, False, True]
# example 3
a1 = np.array([True, True, True, True, True], dtype=object)
a2 = np.array([np.NaN, np.NaN, np.NaN, False, np.NaN], dtype=object)
output = a1.combinaficate(a2)
# prints [True, True, True, False, True]
# example 4
a1 = np.array([False, False, False, False, False], dtype=object)
a2 = np.array([np.NaN, np.NaN, True, False, np.NaN], dtype=object)
output = a1.combinaficate(a2)
# prints [False, False, True, False, False]
我知道我可以写一个for循环,但问题的实质是“有没有一种方法可以使用严格的numpy来进行这种计算?“.
谢谢
3条答案
按热度按时间zvms9eto1#
这个怎么样?强制转换是必要的,因为
np.isnan
不喜欢布尔值。如果你愿意使用pandas,你也可以使用pd.isnull
,而不进行强制转换。5hcedyr02#
另一个解决方案:
例如:
图纸:
smtd7mpg3#
可以按如下方式进行矢量化: