为什么python np数组输出中有更多字符串?

为什么python np数组输出中有更多字符串?,python,arrays,numpy,Python,Arrays,Numpy,我不明白为什么下面的代码答案是: import numpy as np dt=[('name','S16'),('grad',int),('cpg',float)] val=[("Ahmadmm",2008,12),('ali',2010,12.2),('mitra',505,15.15)] arr=np.array(val,dtype=dt) print(arr) output: [(b'Ahmadmm', 2008, 12. ) (b'ali', 2010, 12.

我不明白为什么下面的代码答案是:

import numpy as np
dt=[('name','S16'),('grad',int),('cpg',float)]
val=[("Ahmadmm",2008,12),('ali',2010,12.2),('mitra',505,15.15)]
arr=np.array(val,dtype=dt)
print(arr)

output:  [(b'Ahmadmm', 2008, 12.  ) (b'ali', 2010, 12.2 ) (b'mitra',  505, 15.15)]

为什么每个字符串前面都有一个“b”?

我想这篇文章回答了你的问题:。“b”字符基本上表示字节文字。

如本文所述,引用以下内容:

Python 2中忽略了前缀“b”或“b”;它表示在Python3中,文本应该变成字节文本(例如,当代码自动转换为2to3时)。“u”或“b”前缀后面可以跟“r”前缀

各国:

字节文本总是以“b”或“b”作为前缀;它们生成字节类型而不是str类型的实例。它们只能包含ASCII字符;数值大于等于128的字节必须用转义符表示


如何关闭它?这个问题必须重新打开-OP没有问“b”字符在字符串文本前面做什么?”但为什么会这样。他显然想要字符串输出而不是字节输出,而不是对“b”的解释。使用
('name','U16')
而不是
('name','U16')
。S表示字符串数据类型,U表示Unicode数据类型。-然后输出将是
[('Ahmadmm',2008,12.)('ali',2010,12.2)('mitra',505,15.15)]