psf*_*ero 5 python arrays size types
在我的问题之前快速了解一下背景。我在重构俄罗斯方块游戏时遇到了这个问题。
可以通过以下方式表示俄罗斯方块(我将使用“L”形作为示例):
布尔数组:
boolShape = [False, False, False, False,
False, True, True, False,
False, False, True, False,
False, False, True, False]
Run Code Online (Sandbox Code Playgroud)
一个字符数组(我猜是“长度为 1 的字符串”,因为这是 Python):
charShape = ['.', '.', '.', '.',
'.', 'X', 'X', '.',
'.', '.', 'X', '.',
'.', '.', 'X', '.']
Run Code Online (Sandbox Code Playgroud)
整数数组:
intShape = [0, 0, 0, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0]
Run Code Online (Sandbox Code Playgroud)
一个 numpy 整数数组:
npShape = np.array([0, 0, 0, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0])
Run Code Online (Sandbox Code Playgroud)
一个 numpy 布尔数组:
npBoolShape = np.array([0, 0, 0, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 1, 0], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
当我使用sys.getsizeof(array)andsys.getsizeof(array[i])获取每个数组和单个元素的大小时,我得到以下信息:
Bool | Array: 184 | Item: 24
Char | Array: 184 | Item: 50
Int | Array: 184 | Item: 24
NP | Array: 224 | Item: 32
NPBool| Array: 112 | Item: 25
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么单个字符比 int 大,但 20 个数组与 20 个 int 大小相同?
在上述阵列之一中实现游戏对性能有什么影响吗?这对人类玩家没有任何区别,但是,要训练 AI,需要多次迭代,时间成为问题。