如何从向量中删除数字?
How to delete numbers from a vector?
我有这个向量
v = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20)
我想删除 2 和 3 的倍数。我该怎么做?
我试过这样做,但没有成功:
import numpy as np
V = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20)
Mul3 = np.arange(1,21,3)
Mul2 = np.arange(1,21,2)
V1 = V [-mul2]
V2 = V1 [-mul3]
我假设 vector
你指的是你用 ()
设置的元组。
您可以使用 list comprehension with two conditions, using the modulo
oprerator you can read up on here:
res = [i for i in v if not any([i % 2 == 0, i % 3 == 0])]
Returns
[1, 5, 7, 11, 13, 19]
这个returns一个标准的Python列表;如果你想要 np 数组或 sth,只需更新你的问题。
您可以直接使用模数 2 和模数 3 的结果在 列表理解 中进行过滤。这会保留 mod 2
和 mod 3
值给出的数字不是 falsy 0:
的项目
>>> [i for i in v if i%2 and i%3]
[1, 5, 7, 11, 13, 19]
如果以上内容不够直观,您可以通过明确测试非零结果来使其更详细:
>>> [i for i in v if not i%2==0 and not i%3==0]
[1, 5, 7, 11, 13, 19]
鉴于您已经使用 NumPy,您可以使用 boolean array indexing 删除 2
和 3
的倍数:
>>> import numpy as np
>>> v = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20) # that's a tuple
>>> arr = np.array(v) # convert the tuple to a numpy array
>>> arr[(arr % 2 != 0) & (arr % 3 != 0)]
array([ 1, 5, 7, 11, 13, 19])
(arr % 2 != 0)
创建一个布尔掩码,其中 2
的倍数是 False
,其他所有内容 True
同样,(arr % 3 != 0)
适用于 3
。这两个掩码使用 &
(和)组合,然后用作 arr
的掩码
我有这个向量
v = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20)
我想删除 2 和 3 的倍数。我该怎么做?
我试过这样做,但没有成功:
import numpy as np
V = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20)
Mul3 = np.arange(1,21,3)
Mul2 = np.arange(1,21,2)
V1 = V [-mul2]
V2 = V1 [-mul3]
我假设 vector
你指的是你用 ()
设置的元组。
您可以使用 list comprehension with two conditions, using the modulo
oprerator you can read up on here:
res = [i for i in v if not any([i % 2 == 0, i % 3 == 0])]
Returns
[1, 5, 7, 11, 13, 19]
这个returns一个标准的Python列表;如果你想要 np 数组或 sth,只需更新你的问题。
您可以直接使用模数 2 和模数 3 的结果在 列表理解 中进行过滤。这会保留 mod 2
和 mod 3
值给出的数字不是 falsy 0:
>>> [i for i in v if i%2 and i%3]
[1, 5, 7, 11, 13, 19]
如果以上内容不够直观,您可以通过明确测试非零结果来使其更详细:
>>> [i for i in v if not i%2==0 and not i%3==0]
[1, 5, 7, 11, 13, 19]
鉴于您已经使用 NumPy,您可以使用 boolean array indexing 删除 2
和 3
的倍数:
>>> import numpy as np
>>> v = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20) # that's a tuple
>>> arr = np.array(v) # convert the tuple to a numpy array
>>> arr[(arr % 2 != 0) & (arr % 3 != 0)]
array([ 1, 5, 7, 11, 13, 19])
(arr % 2 != 0)
创建一个布尔掩码,其中 2
的倍数是 False
,其他所有内容 True
同样,(arr % 3 != 0)
适用于 3
。这两个掩码使用 &
(和)组合,然后用作 arr