带走一些nympy数组的元素(删除索引)

时间:2018-03-06 18:21:04

标签: python python-2.7 numpy

附录:我对这个值进行了标准化,所以我的所有0.0值都变为-1,这就是为什么整个事情都不起作用....我正在重新运行一切,它现在应该没问题了......

所以这个可能很容易,但它似乎对我不起作用。所以我有一个数组(123000 * 1)和一个矩阵(123000 * 50 * 12)

我不想带走数组中0.0值的所有行,并取消矩阵中的等效行,但我想要跟随索引(就像array [x] == 0,我希望数组[x + 1]成为数组[x]而不是数组[x]只是为空。

所以我跑了这个(不是程序员,可能完全没用)

jui=0
for element in y_train:
    print element
    if element == 0.0:
        np.delete(y_train, jui, 0)
        np.delete(x_train, jui, 0)
    jui=jui+1

我知道,也许我的元素的10%应该被洗掉,但是当我打印y_train的形状时,它之前和之后是相同的(相同数量的元素)

= 7任何帮助都会被贬低

提前致谢!

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用面具。类似的东西:

from numpy.random import rand
N = 20
y_train = rand(N)
x_train = rand(N, 2, 3)
y_train[10, 11, 13] = 0 # just some random places 
mask = where(y_train != 0)[0] # just need the linear mask
y_train1 = y_train[mask]
x_train1 = x_train[mask, :, :]

您可能希望制作y_train1x_train1的副本,因为这些只是y_trainx_train的“观看次数”:

y_train2 = y_train1.copy()
x_train2 = y_train1.copy()

显然,如果您在删除零元素后不需要以前的版本,则可以直接指定y_trainx_train