Numpy:防止 Float16 数组转换为 Float32

时间:2020-12-23 03:33:17

标签: python numpy

我正在进行一些消耗大量内存的计算。我注意到我的一个函数(在下面复制)使我的计算机内存不足,并说它正在尝试使其成为 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)

0 个答案:

没有答案
相关问题