NumPy不会附加数组

时间:2016-01-04 18:53:36

标签: python arrays numpy

我目前正在研究神经网络来播放Rock-Paper-Scissors,但我遇到了一个巨大的问题。

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

#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)

我正在使用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]))

有没有更好的方法来加入这些数组,以便算法可以学习?

注意:“追加”并未绘制任何错误,但似乎无法正常工作。

2 个答案:

答案 0 :(得分:3)

正如https://github.com/edenhill/librdkafka所说,

  

将值附加到此数组的副本

(强调我的)。

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

input_data = np.append(input_data, current_turn, axis = 0)

示例:

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]

另请参阅docs是否有兴趣np.append以这种方式行事。

答案 1 :(得分:0)

您可以使用numpy.concatenate方法。

 <div [hidden]="edit">
            <ul>
                <li><b>Category: </b>{{item.category}}</li>
                <li><b>Name: </b>{{item.name}}</li>            
            </ul>
            <button class="btn btn-default" (click)="edit=true">Edit</button>
        </div>

        <div [hidden]="!edit">
            <form (ngSubmit)="onSubmit()" [ng-form-model]="form">
                <div class="form-group">
                    <label class="bold">Category: </label>
                    <input ng-control="category">
                </div>
                <div class="form-group">
                    <label class="bold">Name: </label>
                    <input ng-control="name">
                </div>
                <button type="submit">Submit</button>
            </form>
        </div>

private item:Item = new Item("food","apple");
    form = new ControlGroup({
        categorie: new Control(this.item.category),
        naam: new Control(this.item.name)
    });
    edit = false;

    onSubmit() {
        this.edit = false;
        alert("saved");
    }

请参阅文档以获取更多帮助:http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.concatenate.html