【发布时间】:2020-08-13 23:49:24
【问题描述】:
我有一组数字,其中列索引 3 有负数和正数,因此模式从正数变为负数。如何使用 Numpy 数组检查这一点,我正在考虑计算列的总和,如果它少于行数,那么就会发生符号变化。 Numpy 中是否有任何功能可以更有效地执行此操作,可能类似于 XOR ?
import numpy as np
t = [[363.57, 363.57, 1, 1, 1, 1, 1, 1],
[385.41, 385.41, 1, -1, 1, 1, 1, 1],
[406.12, 406.12, 1, -1, 1, 1, 1, 1],
[424.2, 424.2, 1, -1, 1, 1, 1, 1],
[444.91, 444.91, 1, -1, 1, 1, 1, 1],
[468.26, 468.26, 1, -1, 1, 1, -1, 1]]
x = np.array(t)
x[:, 3]
我不喜欢下面的解决方案,因为如果我有超过 100 K 行,它就太庞大了。
if sum(x[:, 3]) <= x.shape[0]:
print("sign change happend")
我可以更改数据结构,这就是我将其存储在变量t 中的方式。尝试使用 numpy 以更高效、更快速的方式进行操作。
预期输出
if col_3_sign_changed:
# do something
【问题讨论】:
-
你想要的输出是什么?只是第 3 列是否有多个符号的布尔值?
-
是的,只是布尔值
-
我认为您已经建议的解决方案非常好。也许您也想使用符号来解释非单位值
np.sign(x[:,3]).sum()<x.shape[0]