我在一些非常基本的代码中遇到了一个奇怪的错误,因为(我认为)升级到python 3.5(从2.7开始)
当试图打开一个文件(充满位字符串)并且他们像这样操纵字符串时:
#bit string data
data = open(read_path+'genomes'+str(time)).read().replace(',','\n').replace('\n','')
x = data.split()
CA = np.array(x).astype('string')
Genomes = np.reshape(CA, (size,size))
genomelength = len(Genomes[0][0])
for entry in range(0, size**2): total_mut1[entry] = np.array(sum_digits(CA[entry])).astype('int')
mut_array1 = np.reshape(total_mut1, (size,size))
升级前哪个有用......
我现在收到此错误:
CA = np.array(x).astype('string')
TypeError: data type "string" not understood
这只是一个愚蠢的修复(我希望)。提前谢谢。
答案 0 :(得分:1)
以下是有关dtype选项的信息: http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
具体做法是:
当用于生成dtype对象时,有几种python类型等效于相应的数组标量:
int int _
bool bool _
float float _
复杂的cfloat
str string
unicode unicode _
缓冲无效
(所有其他人)对象_
如上面的评论所示,.astype(str)应该有效。
编辑
实际上这些信息来自Python2.7,我也试过这个并且unicode没有用,但astype(str)默认为unicode(正如人们在python3中所期望的那样)。有趣的是,因为这些字符串代码似乎有效:
' B'布尔
'我' (签名)整数
' U'无符号整数
' F'浮点
' C'复杂浮点
' O' (Python)对象
' S',' a' (byte-)string
' U' Unicode
' V'原始数据(无效)
有关python3与python2中字符串的信息(可能是最重要的更改)在这里: