私はnumpyを使用してランダムな整数の2D配列を生成しています:
_import numpy
arr = numpy.random.randint(16, size = (4, 4))
_
これは単なる例です。私が生成している配列は実際には巨大で可変サイズです。数値は常に0〜16になるため、スペースを節約し、配列を_uint8
_型にする必要があります。私は以下を試しました
_arr = numpy.random.randint(16, size = (width, height), dtype = numpy.uint8)
_
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'
_
randint()
のドキュメントでは、タイプを設定できることについては何も触れられていません。特定の整数型でランダム配列を作成するにはどうすればよいですか?私は、1つの関数に縛られるのではなく、タイプ_uint8
_の0から16までの一様分布にすぎません。
最短の方法は astype()
メソッドを使用することです:
x = np.random.randint(16, size=(4,4)).astype('uint8')
これは任意の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