Python numpy'预期无符号字节数据类型的输入数组'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python numpy'预期无符号字节数据类型的输入数组'相关的知识,希望对你有一定的参考价值。
我想生成特定范围内的所有二进制数,到目前为止我的代码是:
int2binary = {}
largest_number = pow(2,16)
binary = np.unpackbits(np.array([range(largest_number)],dtype=np.uint16).T,axis=1)
由于生成的数字将高于8位二进制数可以显示,我已将qtype从np.uint8
(可以工作)更改为np.uint16
,然后返回错误:
binary = np.unpackbits(np.array([range(largest_number)],dtype=np.uint16).T,axis=1)
TypeError: Expected an input array of unsigned byte data type
我怎么能修复这个错误?我在NumpPy
网站上查看了他们的数据类型,uint16
就在那里,所以我不确定为什么这不起作用。
更新
使用Abhisek Roy的答案,错误不再存在。但是我忘了添加导致新错误的代码的导入部分:
int2binary[i] = b[i]
IndexError: index 1 is out of bounds for axis 0 with size 1
对于循环:
for i in range(largest_number):
int2binary[i] = b[i]
答案
我想这就是你想要的。跑吧。有用。检查并告诉。
import numpy as np
int2binary = {}
largest_number = pow(2,16)
a=(np.array([range(largest_number)],dtype=np.uint8))
b = np.unpackbits(a, axis=1)
for row in b:
x=row
for i in range(len(x)):
int2binary[(i)] = x[i]
print(int2binary)
另一答案
uint16数组的视图('uint8')可以解决这个问题:
#! /usr/bin/python3
import numpy as np
print(np.__version__)
int2binary = {}
largest_number = pow(2,16)
A = np.array(range(largest_number),dtype=np.uint16)
print(A)
print(A.ndim)
print(A.size)
print(A.flags)
print(A.itemsize)
print(A.nbytes)
B = A.view('uint8')
print(B)
print(B.ndim)
print(B.size)
print(B.flags)
print(B.itemsize)
print(B.nbytes)
binary = np.unpackbits(B)
print(binary)
print(binary.ndim)
print(binary.size)
print(binary.flags)
print(binary.itemsize)
print(binary.nbytes)
以上是关于Python numpy'预期无符号字节数据类型的输入数组'的主要内容,如果未能解决你的问题,请参考以下文章