我尝试使用np.equal()
在numpy数组中搜索给定值的示例,例如:
a = ["192.168.0.1", "192.168.0.2", "192.168.0.3"]
b = "192.168.0.3"
a = np.array(a, dtype=str)
b = np.array(b, dtype=str)
result = np.equal(a,b)
字符串
但是当np.equal()
在a
数组中搜索b
时,我在标题中得到了错误。我在使用numpy 1.21.6的生产环境中测试脚本时遇到了这个错误,它不会在使用numpy 1.24.2的测试环境中发生。
除了更新生产服务器上的numpy(可能会破坏其他东西),我该如何解决这个问题?
完整错误:
numpy.core._exceptions.UFuncTypeError: ufunc 'equal' did not contain a loop with signature matching types (dtype('<U1'), dtype('<U1')) -> dtype('bool')
型
我已经尝试在数组定义中使用dtype=str
强制两个数组的dtype
。我也看过其他问题,但没有发现任何类似的东西。
1条答案
按热度按时间r9f1avp51#
如果您对潜在的性能影响没有意见,那么下面的代码可以在1.21.6上运行:
字符串
产量
型
在更新版本的numpy中,我看到以下两条语句花费的时间大致相同,大约为0.29s,但在1.21.6中,第一条语句花费的时间大约为5.44s,因此如果您使用10k IP运行500次,可能会有关系。
型