Cats萌萌
你的循环没有什么:In [26]: width, height = 4,4 ...: dist_arr = np.empty((width, height)) ...: for x in range(0, width): ...: for y in range(0, height): ...: dist = math.sqrt((300 - x)**2 + (600 - y)**2) ...: dist_arr[x, y] = dist ...: In [27]: dist_arrOut[27]: array([[670.82039325, 669.92611533, 669.03213675, 668.1384587 ], [670.37377634, 669.47890183, 668.58432527, 667.69004785], [669.92835438, 669.03288409, 668.13771036, 667.24283436], [669.48412976, 668.58806451, 667.6922944 , 666.79682063]])有一些方法可以更快地做到这一点,但它们确实有效。与整个数组numpy计算相同的值:In [28]: np.sqrt((300-np.arange(4)[:,None])**2 + (600 - np.arange(4))**2)Out[28]: array([[670.82039325, 669.92611533, 669.03213675, 668.1384587 ], [670.37377634, 669.47890183, 668.58432527, 667.69004785], [669.92835438, 669.03288409, 668.13771036, 667.24283436], [669.48412976, 668.58806451, 667.6922944 , 666.79682063]])