NumPy 不会追加数组

tdh*_*tdh 0 python arrays numpy

我目前正在研究一个神经网络来玩石头剪刀布,但我遇到了一个巨大的问题。

我让神经网络根据三个动作的历史来预测接下来会发生什么,其中人类的每一个动作都会在一个数组中创建一个新列表,其中包含之前的两个动作和新的一个。然后神经网络对此进行训练和学习。我的代码可以在下面找到。

#add new situation, with what is currently happening to make current prediction with adjusted weights

current_turn = np.array([[input_data[len(input_data) - 1][1], input_data[len(input_data) - 1][2], output_data[len(output_data) - 1][0]]])
np.append(input_data, current_turn, axis = 0)
Run Code Online (Sandbox Code Playgroud)

我正在使用 Python 系统 NumPy,它拒绝附加这两个数组,因此神经网络无法学习。

编辑:响应之一认识到必须将数组重新分配给这个新附加的数组。当我稍后尝试这个时,如下所示,它再次不起作用。

if human_choice == "r":
        output_data = np.append(output_data, ([0]))
elif human_choice == "p":
        output_data = np.append(output_data, ([0.5]))
elif human_choice == "s":
        output_data = np.append(output_data, ([1]))
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来连接这些数组以便算法可以学习?

注意:“附加”没有绘制任何错误,但似乎没有完成其工作。

Ily*_*rov 5

正如文档所说,

值将附加到该数组的副本中。

(强调我的)。

因此,np.append创建一个新列表而不是修改原始列表。你必须写:

input_data = np.append(input_data, current_turn, axis = 0)
Run Code Online (Sandbox Code Playgroud)

例子:

import numpy as np
my_array = np.array([1, 2, 3])
print(my_array) 
# [1 2 3]
my_array = np.append(my_array, [4])
print(my_array)
# [1 2 3 4]
Run Code Online (Sandbox Code Playgroud)

如果有兴趣为什么会这样,另请参阅这个问题。np.append