我遇到了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而不影响该数组中其余值的方法。
由于
答案 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