Python numpy“需要无符号字节数据类型的输入数组”

2024-10-01 15:29:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想生成特定范围内的所有二进制数,到目前为止我得到的代码是:

int2binary = {}
largest_number = pow(2,16)
binary = np.unpackbits(np.array([range(largest_number)],dtype=np.uint16).T,axis=1)

由于生成的数字将高于8位二进制数所能显示的值,我已将数据类型从np.uint8(有效)更改为np.uint16,然后返回错误:

^{pr2}$

如何修复此错误?我已经在NumpPy网站上查找了它们的数据类型,uint16就在那里,所以我不确定为什么这不起作用。在

更新

用阿披实罗伊的回答,错误已经不存在了。但是我忘了添加代码的导入部分,这会产生新的错误:

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]

Tags: 代码numberfor错误np二进制range数据类型
2条回答

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)

我想这就是你想要的。跑了这个。它起作用了。检查并告知。在

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)

相关问题 更多 >

    热门问题