gpt4 book ai didi

python - 拥有不同版本的 None 的合理方法?

转载 作者:太空狗 更新时间:2023-10-29 22:08:43 26 4
gpt4 key购买 nike

使用 Python3。

假设您有一百万只甲虫,您的任务是对它们 Blob 的大小进行编目。因此,您将制作一个表格,其中每一行都是一只甲虫,行中的数字代表 Blob 的大小;

 [[.3, 1.2, 0.5],
[.6, .7],
[1.4, .9, .5, .7],
[.2, .3, .1, .7, .1]]

此外,您决定将其存储在一个 numpy 数组中,为此您用 None 填充列表(numpy 会将其转换为 np.nan)。

 [[.3, 1.2, 0.5, None, None],
[.6, .7, None, None, None],
[1.4, .9, .5, .7, None],
[.2, .3, .1, .7, .1]]

但是有一个问题,由于 3 个原因之一,表示为 None 的值可能是 None;

  1. 甲虫没有很多 Blob ;该数量不存在。

  2. 甲虫不会静止不动,您无法测量位置。

  3. 您还没有抽出时间测量那只甲虫,因此该值未分配。

我的问题实际上不涉及甲虫,但原理是一样的。我想要 3 个不同的 None 值,这样我就可以使这些缺失值的原因不同。我目前的解决方案是使用一个太大的值,以至于它在物理上是不可能的,但这不是一个非常安全的解决方案。

假设您不能使用负数 - 实际上我测量的数量可能是负数。

数据量大,读取速度很重要。

编辑;评论正确地指出,说速度很重要而不说什么操作有点毫无意义。主成分分析可能用于变量去相关,聚类算法的欧几里德距离平方计算(但该变量中的数据稀疏)可能用于一些插值。最终是一个递归神经网络,但它将来自一个库,所以我只需要将数据转换为输入形式。所以也许没有什么比线性代数更糟糕的了,如果我小心的话,它应该都可以放入 RAM。

什么是好的策略?

最佳答案

最简单的方法是使用字符串:'not counted'、'unknown' 和 'N/A'。但是,如果您想在 numpy 中快速处理,则混合数字/对象的数组不是您的 friend 。

我的建议是添加几个与您的数据形状相同的数组,由 0 和 1 组成。因此数组 missing = 1 where spot is missing else 0,依此类推,相同使用数组 not_measured 等。

然后您可以在任何地方使用 NaN,然后​​使用例如 np.where(missing == 1) 屏蔽您的数据以轻松找到您需要的特定 NaN。

关于python - 拥有不同版本的 None 的合理方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55166618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com