Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 似乎是对象的整数数组_Python 3.x_Numpy - Fatal编程技术网

Python 3.x 似乎是对象的整数数组

Python 3.x 似乎是对象的整数数组,python-3.x,numpy,Python 3.x,Numpy,我有一个奇怪的情况,我不明白。我希望使用数组作为索引 batch_index = np.arange(min(mb_size,len(D)), dtype=np.int32) Q_target[batch_index, actions] = rewards + gamma*np.max(Q_next, axis=1)*dones 但当我运行此命令时,会出现一个错误: 索引器:用作索引的数组必须是整数(或布尔值) 类型 它似乎是一个对象数组: In: actions Out: array([2,

我有一个奇怪的情况,我不明白。我希望使用数组作为索引

batch_index = np.arange(min(mb_size,len(D)), dtype=np.int32)
Q_target[batch_index, actions] = rewards + gamma*np.max(Q_next, axis=1)*dones
但当我运行此命令时,会出现一个错误:

索引器:用作索引的数组必须是整数(或布尔值) 类型

它似乎是一个对象数组:

In: actions
Out: array([2, 2, 2, 2], dtype=object)
在变量资源管理器中也是如此:

类型:对象值数组:numpy模块的ndarray对象

同时:

In:type(actions[0])
Out: numpy.int64
我知道我可以使用:

actions = np.array(actions, dtype=np.int32)
但我不明白我为什么要这么做

附:以下是我如何获得
行动的方法

D = deque()
D.append((state, action, reward, state_new, done))
#type(action) == int64
minibatch = np.array(random.sample(D, min(mb_size,len(D))))
actions = minibatch[:,1]

在我看来,这是因为
操作
是混合类型的(即
完成
是布尔型,
奖励
很可能是某种数字等),因为它来自
队列
对象。
一般来说,在python中,特别是在NumPy中,当您有一个混合的、非数字的对象类型时,数组将被强制转换为一个对象(或所有项都同意的其他统一类型)。因此,在您的情况下,无法使用此数组为数据编制索引的原因不是由于
batch_index
,而是由于
actions
数组。

actions.dtype
?actions.dtype返回dtype('O'),然后
actions
不能(直接)用作索引。