首页 > 编程知识 正文

numpy赋值字符串,numpy字符串转数字

时间:2023-05-03 23:57:21 阅读:137464 作者:3014

以下是使用查找表的方法。 alphabet=NP.Array(list ) ' acgt ) )

alphabet

array(['a ',' c ',' g ',' T'],dtype='

要使用查找表,必须将字符重新解释为索引。 这是通过视图转换完成的。

^{pr2}$

您现在可以构建所需的85个插槽。 实际上,我们只使用了65、67、71和{}四个插槽。 关于输出格式,可以自由选择最符合我们要求的格式。

示例1-输出为bytestring:lookup _1=NP.zeros ((alph _ as _ num.max )、dtype='S4 ' ) ) ) ) )

lookup _1[ alph _ as _ num ]=[ b ' 0001000 ' [ I : i4 ] foriinrange (4)

示例2-输出为uint8: lookup _2=NP.zeros ((alph _ as _ num.max )、dtype=np.uint8) ) ) ) ) )

lookup _2[ alph _ as _ num ]=1np.arange (4)。

示例3-输出为每个字符4u int8: lookup _3=NP.zeros ((alph _ as _ num.max ) ) 1,4 ),dtype=np.uint8) )。

lookup _3[ alph _ as _ num [ :3360-1 ]=NP.identity (4)

将此应用于100个字符串: seq吧

array ((catttctcaccatttgtttttcattaggtaggagcgactactaccaagatgcactgccggtcttctttgtttttatg () )、

dtype='

它只依赖于numpy内置的高级索引,因此搜索速度非常快(例如,比Python词典快得多)。

视图转换基本上是免费的。 只需重新解释数据缓冲区。 没有复制或转换。

例1-byte strings:lookup _1[ seq.view (NP.int 32 ) ]

阵列(b'0010 ',b'0001 ',b'1000 ',b'1000 ',b'1000 ',b'0010 ',b'1000 ',

b'0010 '、b'0010 '、b'0001 '、b'0010 '、b'0010 '、b'0001 '、b'1000 '、

b'1000 '、b'1000 '、b'1000 '、b'0100 '、b'0100 '、b'1000 '、b'1000 '、b'1000 '、

b'1000 '、b'1000 '、b'1000 '、b'0010 '、b'0001 '、b'1000 '、b'1000 '、b'1000 '、

b'0100 '、b'0001 '、b'1000 '、b'0010 '、b'0010 '、b'0100 '、b'1000 '、b'1000 '、

b'1000 '、b'0001 '、b'0100 '、b'0100 '、b'1000 '、b'0100 '、b'0100 '、b'0100 '、

b'0001 '、b'0100 '、b'0010 '、b'0010 '、b'0100 '、b'0100 '、b'0001 '、

b'0010 '、b'1000 '、b'0001 '、b'1000 '、b'0100 '、b'1000 '、b'0010 '、

b'1000 '、b'0001 '、b'0010 '、b'0010 '、b'0100 '、b'0001 '、b'0001 '、b'0001 '、

b'0001 '、b'0100 '、b'0001 '、b'1000 '、b'0100 '、b'0010 '、b'0001 '、

b'0010 '、b'0010 '、b'1000 '、b'0100 '、b'0010 '、b'0010 '、b'0010 '、b'0010 '、

b'0010 '、b'0100 '、b'0100 '、b'0100 '、b'1000 '、b'0010 '、b'1000 '、

b'0100 '、b'0100 '、b'1000 '、b'0010 '、b'1000 '、b'0001 '、b'1000 '、

b'0010 '、b'1000 '、b'0010 '、b'1000 '、b'1000 '、b'0001 '、b'0001 '、b'0001 '、

b'1000 ',b'0100'],dtype='|S4 ' )

作为选择,它们也可以被认为是长序列: lookup_1[seq.view(NP.int32 ) ].view ) ' s400 )。

array(b ) 0010000110001000100001000100010001000100010001100010001000100010001000100010001000100001000010000100001000000100010000100010000001010000010100010101010010001000100000 0001000100010010000 00000101000100100001000100000101000010001001000100000100101000000110000100100000101000000100100010010000010001000101000001100001000 010001000100010000 1000010001000100010001000100010001000100010001000100010001000100001000100001000000001000010000000100000100010000100010001000101000010100000100100000010010001000

dtype='|S400 ' )

示例2-uint8: lookup _2[ seq.view (NP.int 32 ) ]

array (2,1,8,8,8,2,8,2,2,1,8,8,4,4,8,8,8,8,8,8

8、8、2、1、8、8、4、1、8、2、4、8、8、1、4、8、4、4、1、4、

2,2,4,4,1,2,8,1,8,4,8,2,8,1,2,4,4,1,

八、四、二、一、二、二、八、四、二、四、四、八、二、八、四、八、二、

8,1,8,2,8,2,8,8,1,1,8,4 ],dtype=uint8)

示例3-每个字符4个uint8; 但是,让我们使用不同的seq处理多行。 seq

阵列([ ' ccct ' ],

['GCGA']],dtype='

lookup_3[seq.view(NP.int32 ) ].reshape (len ) seq,-1) ]

array ([ 0,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0 ],

[ 0,1,0,0,0,1,0,0,1,0,0,0,0,0,1 ],dtype=uint8)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。