Mad*_*ist 12 python random numpy
我正在使用numpy生成一个随机整数的2D数组:
import numpy
arr = numpy.random.randint(16, size = (4, 4))
Run Code Online (Sandbox Code Playgroud)
这只是一个例子.我生成的数组实际上是巨大的,并且大小可变.由于数字总是从0到16,我想节省一些空间并使数组类型uint8
.我尝试了以下内容
arr = numpy.random.randint(16, size = (width, height), dtype = numpy.uint8)
Run Code Online (Sandbox Code Playgroud)
在尝试匹配的行为zeros
和ones
,但我得到了以下错误:
Traceback (most recent call last):
File "<ipython-input-103-966a510df1e7>", line 1, in <module>
maze = numpy.random.randint(16, size = (width, height), dtype = numpy.uint8)
File "mtrand.pyx", line 875, in mtrand.RandomState.randint (numpy/random/mtrand/mtrand.c:9436)
TypeError: randint() got an unexpected keyword argument 'dtype'
Run Code Online (Sandbox Code Playgroud)
文档中randint()
没有提到任何关于能够设置类型的内容.如何创建具有特定整数类型的随机数组?我没有绑定任何一个函数,只是从0到16类型的均匀分布uint8
.
Han*_*rén 11
最快的方法是使用以下astype()
方法:
x = np.random.randint(16, size=(4,4)).astype('uint8')
Run Code Online (Sandbox Code Playgroud)
这适用于任何numpy数组.但请注意,默认情况下它不会检查转换是否有效.
问题是np.random.randint无法指定dtype
import numpy as np
random_array = np.random.randint(0,16,(4,4))
[[13 13 9 12]
[ 4 7 2 11]
[13 3 5 1]
[ 9 10 8 15]]
print(random_array.dtype)
>>int32
random_array = np.array(random_array,dtype=np.uint8)
print(random_array.dtype)
>>uint8
Run Code Online (Sandbox Code Playgroud)