在python中包含字符串的ndarray的dtype

时间:2017-12-30 06:33:36

标签: python arrays numpy

我知道在ndarray包含字符串的情况下,返回的dtype的格式为dtype(S#),其中#表示字符串的长度。

result of dtype attribute

如图所示,数组'a'是从列表[1,'2','3']生成的。创建数组后,所有元素都将成为字符串类型。数组'b'是从列表['1',2,'3']创建的。

a.dtype给出S21,而b.dtype给出S1。 a和b中元素的长度为1.为什么第一个数组中元素的长度为21,即使所有元素的长度都是1?

发现即使1被9223372036854775807替换,dtype也将继续为'S21'。一旦我们使用9223372036854775808,dtype变为'S20'。这是怎么发生的 有人请解释

1 个答案:

答案 0 :(得分:0)

np.array是已编译的代码,因此我们必须深入研究,以确切了解正在发生的事情。我不记得看到任何文件。所以最简单的方法就是尝试一些值并寻找模式。

如果第一个元素是一个字符串,它似乎使用最长的字符串(或str(i)表示数字)。

如果第一个是数字,它似乎以某个默认大小开头。

除非dtype截断一些字符串,否则我不会太担心这种行为。如果重要,我建议你定义自己的长度。