python - 如何比较 Python 3 中的 numpy 字符串

标签 python string numpy comparison

下面演示了问题:

import io
import numpy as np

a = np.loadtxt(io.StringIO("val1 val2\nval3 val4"), \
               dtype=np.dtype([("col1", "S10"), ("col2", "S10")]))
print("looks weired: %s"%(a["col1"][0]))
assert(a["col1"][0] == "val1")

我不明白应该如何比较字符串。在我的系统(numpy 1.6.2、python 3.2.2)上,输出如下所示:

>>> 
looks weired: b'val1'
Traceback (most recent call last):
  File "D:/..../bug_sample.py", line 7, in <module>
    assert(a["col1"][0] == "val1")
AssertionError

最佳答案

这不是numpy相关的:

>>> b"asd" == "asd"
False

在 Python 3 中,bytes 对象不等于 string。所以要么:

  • 比较 b"val1" 而不是 "val1" 以便类型匹配,
  • bytes 对象解码为字符串(如 .decode('utf-8') 并与 "val1" 进行比较。

关于python - 如何比较 Python 3 中的 numpy 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19956983/

相关文章:

string - 在 Lua 中将字符串写入二进制

javascript - 寻找返回字符串一部分的有效方法

python - 对具有不等长子列表的数组应用简单操作

python - API 调用 (json) 上的 UnicodeEncodeError

python - 如何在 Facebook Messenger Bot 中抑制表情符号 - Python

c++ - 迭代器 (string::iterator) 的行为是否超出范围?

python - 来自大型掩码数组的 Numpy 平均值

python - 在并行 Python 中导入 NumPy

python - 你如何使用 Django-filter 的 '__in' 查找?

python - Django 加载对象以防唯一键重复