import numpy as np def float_to_int16(float_values, _num_ints): """ 将指定数量的浮点数转换为指定数量的 16 位整数。 :param float_values: 输入的浮点数列表或数组。 :param _num_ints: 要输出的 int16 数量。 :return: 转换后的 int16 数组。 """ # 缩放浮点数到 int16 范围 scale_factor = 32767 / max(abs(np.min(float_values)), np.max(float_values), 1) scaled_floats = np.array(float_values) * scale_factor # 转换为 int16 并调整数量 int16_values = scaled_floats.astype(np.int16) if len(int16_values) > _num_ints: return int16_values[:_num_ints] # 截取 elif len(int16_values) < _num_ints: padding = np.zeros(_num_ints - len(int16_values), dtype=np.int16) return np.concatenate([int16_values, padding]) # 补零 else: return int16_values # 示例用法 floats = [0.1, 0.5, -0.3, 0.9, -1.0] # 输入浮点数 num_ints = 10 # 指定需要的 int16 数量 result = float_to_int16(floats, num_ints) print(result)