【发布时间】:2021-03-07 22:43:39
【问题描述】:
我正在尝试搜索并查看一个 numpy 数组是否在另一个数组中以进行调试。
#Pattern
arr1 = np.array([1.62434536, -0.61175641, -0.52817175])
#type : np.ndarray
#dtype : 'float64'
#shape : (3,)
然后我有一个 tuples 的 list,其中每个 tuple 中的第一个元素是 n x m ndarray 假设这个对象被称为“my_nest”
arr2 = my_nest[0][0][0][0:3]
arr2
#array([ 1.62434536, -0.61175641, -0.52817175])
#type : np.ndarray
#dtype : 'float64'
#shape : (3,)
但随后使用 in1d 方法返回一个不直观的结果
np.in1d(arr1,arr2)
#array([False, False, False], dtype=bool)
我知道切片 ndarray 会创建对象在内存中的视图,但我什至尝试将 np.copy 包裹在它周围以在内存中创建一个新对象,然后进行比较,但我仍然得到 False。
有人知道这里发生了什么吗?
【问题讨论】:
-
arr1 == arr2的结果是什么? -
或
arr1-arr2。浮点数的相等性测试可能不可靠。 -
@hpaulj。排序似乎是相同的,据我所知,
in1d使用相等测试。当然,一般来说,减法会提供更多信息。