如果条件满足python,则从数组中减去一个数字

时间:2017-06-28 19:12:46

标签: python arrays numpy

我遇到了python中if条件的一个非常基本的问题。

数组 current_img_list 具有维度(500L,1)。如果数字82459在此数组中,我想将其减去1。

index = np.random.randint(0,num_train-1,500)
# shape of current_img_list is (500L,1)
# values in index array is randomized
current_img_list = train_data['img_list'][index]
# shape of current_img_list is (500L,1)

if (any(current_img_list) == 82459):
        i = np.where(current_img_list == 82459)
        final_list = i-1

变量说明 - train_data 的类型为dict。它有4个元素。 img_list 是尺寸为(215375L,1)的元素之一。 num_train 的值为215375,索引的大小为(500L,1)

首先,我不知道这个循环是否有效。我尝试了 all()功能和 numpy.where()功能,但没有成功。其次,我想不出如何从存储它的索引中直接从82459中减去1而不影响该数组中其余值的方法。

由于

3 个答案:

答案 0 :(得分:3)

在Python中循环遍历数组会比让numpy的向量化运算符做他们的事情慢得多:

@Embeddable
class TravelExtras {

    @Column(name = "ALLOW_SMOKE")
    private boolean allowSmoke; 
    @Column(name = "ALLOW_FOOD")
    private boolean allowFood;
    @Column(name = "ALLOW_DRINKS")
    private boolean allowDrinks;
    @Column(name = "AIR_CONDITIONER")
    private boolean airConditioner;

    // Default Constructor, getters and setters...
}

答案 1 :(得分:0)

我有点困惑,想要在这里实现什么,但我会试一试:

如果您试图从数组中的任何位置减去1等于82459,那么可能会使用for循环迭代数组。每次当前索引等于82459时,只需在该索引处设置数字 - = 1.

如果您需要更多帮助,请发布其余的相关代码,以便我进行调试。

答案 2 :(得分:0)

current_img_list = np.array([1,2,3,82459,4,5,6])
i = np.where(current_img_list == 82459)
current_img_list[i] -= 1