为啥 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 数组输出中有更多的字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python之numpy

为啥 np.where & np.min 似乎不适用于这个数组?

为啥 np.dot 不精确? (n 维数组)

怎么将python中的数组全部打印出来array

为啥 SVC 在输出中重复它的参数

tensorflow 学习1——tensorflow 做线性回归