![](/img/trans.png)
[英]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.