Python 通过将非采样值归零对numpy数组进行采样?
假设我有一个充满随机整数的矩阵'R'Python 通过将非采样值归零对numpy数组进行采样?,python,numpy,Python,Numpy,假设我有一个充满随机整数的矩阵'R' import numpy as np matR = np.random.randint(-10,10,size=(4,6)) >>> matR = [[-4 -4 1 -8 -2 5] [ 9 2 -4 -1 4 2] [ 7 8 -2 -9 3 8] [ 9 -3 3 6 4 3]] 现在我知道我可以像这样取样: >>> m
import numpy as np
matR = np.random.randint(-10,10,size=(4,6))
>>> matR = [[-4 -4 1 -8 -2 5]
[ 9 2 -4 -1 4 2]
[ 7 8 -2 -9 3 8]
[ 9 -3 3 6 4 3]]
现在我知道我可以像这样取样:
>>> matR[::2,::2] = [[-4 1 -2]
[ 7 -2 3]]
然而,我真正想要的是一种干净的方式:
>>> matR.?? = [[-4 0 1 0 -2 0]
[ 0 0 0 0 0 0]
[ 7 0 -2 0 3 0]
[ 0 0 0 0 0 0]]
我想避免python循环,使用enumerate很容易 你想要这样的东西吗
>>> import numpy as np
>>> m = np.random.randint(-10,10,size=(4,6))
>>> m
array([[ 7, 4, 7, 7, 5, 9],
[ 5, -7, -2, 4, 2, -4],
[ -9, 4, 6, 8, 5, -10],
[ -6, -8, 8, -5, 2, -3]])
>>> m2 = np.zeros_like(m) # or m2 = m*0
>>> m2[::2, ::2] = m[::2, ::2]
>>> m2
array([[ 7, 0, 7, 0, 5, 0],
[ 0, 0, 0, 0, 0, 0],
[-9, 0, 6, 0, 5, 0],
[ 0, 0, 0, 0, 0, 0]])
你想要这样的吗
>>> import numpy as np
>>> m = np.random.randint(-10,10,size=(4,6))
>>> m
array([[ 7, 4, 7, 7, 5, 9],
[ 5, -7, -2, 4, 2, -4],
[ -9, 4, 6, 8, 5, -10],
[ -6, -8, 8, -5, 2, -3]])
>>> m2 = np.zeros_like(m) # or m2 = m*0
>>> m2[::2, ::2] = m[::2, ::2]
>>> m2
array([[ 7, 0, 7, 0, 5, 0],
[ 0, 0, 0, 0, 0, 0],
[-9, 0, 6, 0, 5, 0],
[ 0, 0, 0, 0, 0, 0]])
戴个面具怎么样
>>> import numpy as np
>>> shape = (4,6)
>>> m = np.random.randint(-10,10,size = shape)
>>> mask = np.zeros(shape,dtype = np.int32)
>>> mask[::2,::2] = 1
>>> mask
array([[1, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0],
[1, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0]])
>>> m
array([[-7, 0, -4, -8, 0, 0],
[ 0, -3, -2, -1, 1, 2],
[ 8, -8, 5, 1, 9, 1],
[ 1, 0, 2, 7, 4, -8]])
>>> m * mask
array([[-7, 0, -4, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0],
[ 8, 0, 5, 0, 9, 0],
[ 0, 0, 0, 0, 0, 0]])
戴个面具怎么样
>>> import numpy as np
>>> shape = (4,6)
>>> m = np.random.randint(-10,10,size = shape)
>>> mask = np.zeros(shape,dtype = np.int32)
>>> mask[::2,::2] = 1
>>> mask
array([[1, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0],
[1, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0]])
>>> m
array([[-7, 0, -4, -8, 0, 0],
[ 0, -3, -2, -1, 1, 2],
[ 8, -8, 5, 1, 9, 1],
[ 1, 0, 2, 7, 4, -8]])
>>> m * mask
array([[-7, 0, -4, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0],
[ 8, 0, 5, 0, 9, 0],
[ 0, 0, 0, 0, 0, 0]])
非常聪明!是的,我喜欢这个。我真该看看!我会坚持下去,以防有一些我不知道的效率极高的事情发生,但这很可能会发生。@RodericDay:是的,等待总是一个好主意。那里有一些真正的巫师。非常聪明!是的,我喜欢这个。我真该看看!我会坚持下去,以防有一些我不知道的效率极高的事情发生,但这很可能会发生。@RodericDay:是的,等待总是一个好主意。这里有一些真正的奇才。你需要让matR以不同的方式采样,还是真的只需要生成6个随机数?你需要让matR以不同的方式采样,还是真的只需要生成6个随机数?这很好,但我想我会同意上面的建议。同样的想法,有点直截了当。谢谢这很好,但我想我会同意上面的建议。同样的想法,有点直截了当。谢谢