我绝对难以接受:
indices = numpy.array([b for a in x for b in a if not b==k])
关于我应该如何阅读[b for a in x for b in a if not b==k]
的任何指针,x
是一个整数的2D数组,k
是一个整数?或者将它括起来以帮助我理解事物的优先级?
答案 0 :(得分:3)
这相当于:
result = []
for a in x:
for b in a:
if not b == k:
result.append(b)
indices = numpy.array(result)
您可以从左侧读取列表推导以进行编写,并将它们转换为单独的for循环。
答案 1 :(得分:2)
它展平x
数组的一个维度(我认为代码假定x
是一个二维数组)并删除整数k
的每个出现。例如:
>>> import numpy as np
>>> x = np.arange(20).reshape(4, 5) # makes it a 2D array
>>> x
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
>>> k = 4
>>> inds = np.array([b for a in x for b in a if not b==k])
>>> inds
array([ 0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
请注意,您的代码并未真正使用功能强大且快速的NumPy功能。如果x
是一个数组,您只需使用:
>>> x[x!=k] # make it 1D and keep only values != k
array([ 0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])