[英]How to create an object of type numpy.int8 in a C numpy extension?
[英]How to convert numpy.int8 to string?
下面的代码尝试从 128 位长的 numpy 数组中获取 ascii 码。
st=""
ans_final=""
for i in range(len(key)):
j=0
while(j<8):
st=st+ (key[i])
j+=1
i+=1
ans=b_to_ascii(st)
ans_final=ans_final+ans
在这段代码中,我计划将一个 8 位长的字符串传递给 b_to_ascii function,它将返回它的 ascii 值,然后将 append 所有的 ascii 值一起得到一个存储在 ans_final 中的 8 个 ascii 值的字符串。
但我收到这个错误
TypeError Traceback (most recent call last)
<ipython-input-30-5929c83ea390> in <module>()
6 j=0
7 while(j<8):
----> 8 st=st+ (key[i])
9 j+=1
10 i+=1
TypeError: can only concatenate str (not "numpy.int8") to str
说这里的key是这样存储的-->
array([1,1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,1], dtype=int8)
所以在转换为 ascii 后,最终答案将是abc
。
在代码的第一次迭代中,我想要做的是,我想将一个字符串st=11000010
传递给 function b_to_ascii
,它将返回a
将存储在ans
中并将附加到字符串ans_final
的字符串。 类似地,我们将迭代接下来的 8 位和剩余的 8 位以获得b
和c
,因此ans_final
将变为abc
那么谁能帮助我如何将 NumPy.int8 转换为字符串?
您可以使用numpy.packbits
function( arr
是您的位数组):
result = ''.join(map(chr, np.packbits(arr)))
也许在理解中进行字符串转换,然后str.join()
方法:
for i in range(0, len(key), 8):
s = ''.join(str(nbr) for nbr in key[i:i+8])
ans = b_to_ascii(s)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.