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可以搞定,麻烦有经验的可以告知,谢谢!

阅读 10.3k
2 个回答
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]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题