numpy 删除nympy数组的某些元素(擦除到的索引)

b4lqfgs4  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(122)

补充:我规范化了值,所以我所有的0.0值变成了-1,这就是为什么整个事情不工作....我正在重新运行一切,现在应该没问题了...
这个可能很简单,但似乎对我不起作用,所以我有一个数组(123000 * 1)和一个矩阵(123000 * 50 * 12)
我想去掉数组中所有值为0.0的行,并去掉矩阵中相应的行,但我想让索引跟在后面(就像如果array [x]== 0,我想让array [x +1]变成array [x],而不是array [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的形状时,前后是一样的(相同数量的元素)
任何帮助都将不胜感激
先谢了!

vwoqyblh

vwoqyblh1#

最简单的方法可能就是戴上面具,比如:

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

相关问题