我想以有效的方式将这个matlab句子翻译成python
Matlab: pairs(sum(pairs, 2) == 0, :) = [];
对是[N,2]矩阵,其中矩阵例如可以是30
在python中存在类似于[]的任何类似语法,以便删除满足条件求和的行(对,2)== 0?
答案 0 :(得分:3)
Numpy提供where
功能:
import numpy as np
>>> x = np.array([1,2,3,4])
>>> x
array([1, 2, 3, 4])
>>> np.where(x <= 2)
(array([0, 1], dtype=int64),)
或
>>> x = np.arange(6).reshape(2, 3)
>>> x
array([[0, 1, 2],
[3, 4, 5]])
>>> x[np.where( x < 5 )]
array([0, 1, 2, 3, 4])
组合使用where
和delete
,您可以使用以下方法删除上述矩阵中的第一行:
>>> np.delete(x, np.where(np.all(x < 3,axis=1)), axis=0)
array([[3, 4, 5]])
答案 1 :(得分:0)
你也可以在没有numpy的情况下做到这一点。
vec = [1, 2, 3, 4]
vec = [x for x in vec if x <=2]
vec
[1, 2]
参考:https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions