Python如何给数组快速赋值

Python如何给数组快速赋值

遇到一个数组快速赋值的问题需要解决,具体问题如下:
有一个1280*960的大小的初始化为0的数组二维数组:

ndarray=np.zeros([1280,960])

我已经知道其中某些位置的值,例如(3,4)=10表示3行4列应该赋值10,我己经将赋值的存储下面的字典类型 :

dcit={(3,4):10, (2,5):10,(10,16):20}

我原来采用的方法是逐坐标比较然后赋值,但是效率太低,请问有什么方法可以快速的根据dict的位置坐标和值给ndarray赋值。考虑是不是pandas可以搞定,麻烦有经验的可以告知,谢谢!


回答:

for (x, y), v in dict.items():

ndarray[x,y] = v


回答:

pandas 也可以,但在这里不需要。

用 numpy 步骤如下

  1. 先把 dict 转成 numpy N*3 矩阵,N 代表赋值次数,列1代表坐标 x, 列2代表坐标 y,列3代表值。
  2. 一次全部赋值。
a = np.zeros((5, 5))

d = {(2,3):10, (3,4):20}

b = np.array([(x,y,v) for (x,y),v in d.items()])

a[b[:,0], b[:,1]] = b[:,2]

以上是 Python如何给数组快速赋值 的全部内容, 来源链接: utcz.com/a/156669.html

回到顶部