为啥 python np 数组输出中有更多的字符串? [复制]
Posted
技术标签:
【中文标题】为啥 python np 数组输出中有更多的字符串? [复制]【英文标题】:why there are more strings in python np array output? [duplicate]为什么 python np 数组输出中有更多的字符串? [复制] 【发布时间】:2021-02-06 22:05:44 【问题描述】:我很困惑为什么下面的代码答案是:
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'?
【问题讨论】:
这个问题必须重新打开——OP 没有问“What 'b' 字符在字符串文字前有什么作用?”但是为什么就在那里。他显然想要字符串输出而不是字节一,而不是对“b”的解释。 使用('name', ' U16')
代替您的('name','S16')
。 S 表示字符串数据类型,U 是 Unicode 类型。 — 那么输出将是[('Ahmadmm', 2008, 12. ) ('ali', 2010, 12.2 ) ('mitra', 505, 15.15)]
【参考方案1】:
我认为这篇文章回答了你的问题:What does the 'b' character do in front of a string literal?。 'b' 字符基本上表示一个字节文字。
【讨论】:
怎么关闭?【参考方案2】:正如NPE 在此question 中所述,引用Python 2.x documentation:
'b' 或 'B' 前缀在 Python 2 中被忽略;它表示该文字应该成为 Python 3 中的字节文字(例如,当代码使用 2to3 自动转换时)。 'u' 或 'b' 前缀后面可能跟有 'r' 前缀。
Python 3 documentation 声明:
字节文字总是以'b'或'B'为前缀;它们生成 bytes 类型而不是 str 类型的实例。它们可能只包含 ASCII 字符;数值为 128 或更大的字节必须用转义符表示。
【讨论】:
以上是关于为啥 python np 数组输出中有更多的字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章