根据单个单元格上的条件从numpy数组中删除行

use*_*697 7 python arrays numpy

最重要的是,抱歉我的英语不好.

我有这个数组t:

array([[ 0,  1,  2,  0,  4,  5,  6,  7,  8,  9],
       [ 0, 11,  0, 13,  0, 15,  0, 17, 18,  0]])
Run Code Online (Sandbox Code Playgroud)

我想删除第二行的值为null的列.在这里,我想删除列0,2,4,6和9,以获取此数组:

array([[  1,   0,   5,   7,  8 ],
       [ 11,  13,  15,  17, 18 ]])
Run Code Online (Sandbox Code Playgroud)

我试过np.sum()但没有成功.

Eel*_*orn 16

与Juh_类似,但更具表现力,并避免一些不必要的性能开销.总共12个高度pythonic,显性和unambigious字符.这真的是numpy 101; 如果你还在试图绕过这个问题,你可以通过阅读一个简单的底漆来帮助自己.

import numpy as np
a = np.array([[ 0,  1,  2,  0,  4,  5,  6,  7,  8,  9],
              [ 0, 11,  0, 13,  0, 15,  0, 17, 18,  0]])
print a[:,a[1]!=0]
Run Code Online (Sandbox Code Playgroud)


esk*_*aev 5

numpy.delete

a = np.array([[0, 1, 2, 0, 4, 5, 6, 7, 8, 9], [0, 11, 0, 13, 0, 15, 0, 17, 18, 0]])

indices = [i for (i,v) in enumerate(a[1]) if v==0]
# [0, 2, 4, 6, 9]

a = np.delete(a, indices, 1)
# array([[ 1,  0,  5,  7,  8], [11, 13, 15, 17, 18]])
Run Code Online (Sandbox Code Playgroud)

  • 这是一个高度非数字的解决方案。它使numpy的要点之一无效,以将循环从python移动到C级 (2认同)