给出以下数组:
x = np.array([[0,2,4,5,5.5,6,7],[4,5,6,7,2,3,4]])
基于该数组,我需要创建另一个跳过行单位的数组,第一列中的值为> 5。
所以结果应该是这样的:
([[5.5,6,7],[2,3,4]])
针对该问题的简单(快速)方法的任何提示? 非常感谢你的帮助!
答案 0 :(得分:3)
我们可以使用boolean array作为过滤索引。
>>> x[:, x[0] > 5]
array([[ 5.5, 6. , 7. ],
[ 2. , 3. , 4. ]])
x[0]
选择第一行x[0] > 5
创建一个布尔数组,检查元素是否为> 5或不。 (这是[False, False, False, False, True, True, True]
。)当我们写some_array[boolean_array]
时,我们只保留some_array
中boolean_array
中相应值为True的元素。例如,
>>> numpy.array([2, 4, 6, 8])[numpy.array([True, False, False, True])]
array([2, 8])
由于我们要选择列,因此布尔数组x[0] > 5
应放在第二个轴中。我们用:
选择整个第一轴。因此,最终表达式为x[:, x[0] > 5]
。
答案 1 :(得分:0)
或枚举函数:
res = []
for i, _ in enumerate(x):
res.append([])
for j, val in enumerate(x[i]):
if j > 5:
res[i].append(val)