NumPy的字符串dtype似乎对应于
Python的str,因此在
Python 2.x和3.x之间进行更改:
在Python 2.7中:
In [1]: import numpy as np
In [2]: np.dtype((np.str_, 1)).itemsize
Out[2]: 1
In [3]: np.dtype((np.unicode_, 1)).itemsize
Out[3]: 4
在Python 3.3中:
In [2]: np.dtype((np.str_, 1)).itemsize
Out[2]: 4
两种情况下,NumPy的版本均为1.7.0.
我正在编写一些我想在两个Python版本上工作的代码,我想要一个ASCII字符串数组(4x内存开销是不可接受的).所以问题是:
>如何在Python 3中为特定长度的ASCII字符串定义dtype(每个字符1个字节)?
>我如何以同样适用于Python 2的方式实现?
>奖金问题:我可以进一步限制字母表,例如到ascii_uppercase,每个字符保存一两个?
我认为可能的答案是第一个问题的字符数组(即有一个字符数组数组而不是字符串数组).好像我可以在构建一个时指定项目大小:
chararray(shape, itemsize=1, unicode=False, buffer=None, offset=0,
strides=None, order=None)
更新:不,itemsize实际上是字符数.但是仍然有unicode = False.
这是要走的路吗?
它也会回答最后一个问题吗?
我如何实际使用它作为dtype?