我正在进行一些消耗大量内存的计算。我注意到我的一个函数(在下面复制)使我的计算机内存不足,并说它正在尝试使其成为 float64。我这里无法重现下面输出float 64的函数,但是这里的计算采用float16数组并输出float32,所以有点问题。
如何让 Python 坚持使用 float16(或者不使用 int 是否会更低?)
import numpy as np
xd1 = np.random.uniform(-1, 0, 10).astype(np.float16).reshape(5, 2)
xd2 = np.random.uniform(-2, 0, 10).astype(np.float16).reshape(5, 2)
def test_me(data1, data2):
data1 = np.deg2rad(data1).astype(np.float16)
data2 = np.deg2rad(data2).astype(np.float16)
lat1 = data1[:, 0]
lng1 = data1[:, 1]
lat2 = data2[:, 0]
lng2 = data2[:, 1]
diff_lat = lat1[:, None] - lat2
diff_lng = lng1[:, None] - lng2
d = np.sin(diff_lat/2)**2 + np.cos(lat1[:,None])*np.cos(lat2) * np.sin(diff_lng/2)**2
return 2 * 6371 * np.arcsin(np.sqrt(d)).astype(np.float16)
test_me(xd1, xd2)