python - numpy - 将 2 个向量与可能缺失的值对齐
问题描述
我有 2 个对齐方式略有不同的 numpy 矩阵
X
id, value
1, 0.78
2, 0.65
3, 0.77
...
...
98, 0.88
99, 0.77
100, 0.87
是
id, value
1, 0.79
2, 0.65
3, 0.78
...
...
98, 0.89
100, 0.80
Y 只是缺少一个特定的 ID。我想对 X 和 Y 执行矢量运算(例如相关性、差异性......等)。这意味着我需要在 X 中删除相应的缺失值。我该怎么做?
解决方案
所有的值都是相同的,所以额外的元素x
将是总和之间的差。
这个解决方案是o(n)
,这里的其他解决方案是o(n^2)
数据生成:
import numpy as np
# x = np.arange(10)
x = np.random.rand(10)
y = np.r_[x[:6], x[7:]] # exclude 6
print(x)
np.random.shuffle(y)
print(y)
解决方案:
注意np.isclose()
用于浮点比较。
sum_x = np.sum(x)
sum_y = np.sum(y)
diff = sum_x - sum_y
value_index = np.argwhere(np.isclose(x, diff))
print(value_index)
删除相关索引
deleted = np.delete(x, value_index)
print(deleted)
出去:
[0.36373441 0.5030346 0.895204 0.03352821 0.20693263 0.28651572
0.25859596 0.97969841 0.77368822 0.80105397]
[0.97969841 0.77368822 0.28651572 0.36373441 0.5030346 0.895204
0.03352821 0.80105397 0.20693263]
[[6]]
[0.36373441 0.5030346 0.895204 0.03352821 0.20693263 0.28651572
0.97969841 0.77368822 0.80105397]
推荐阅读
- python - 如何比较python中的两个数组?
- swift - 使用泛型将 PartialKeyPath 向下转换为 ReferenceWriteableKeyPath?
- python - 使用 Python 使用密码对 GPG 文件进行解密时出错
- c++ - 为什么函数参数的类型推导优先于模板中的类型?
- java - Android 适配器无法用视图填充活动
- spring-boot - 如何在 Thymeleaf 中显示带有参数的本地化消息作为链接
- python - 当 PHP 脚本返回成功时触发 Python 异步函数
- mysql - docker搭建后如何运行程序
- c# - 预期在 Mock 上调用一次,但为 0 次
- ejs - 如何在我的 profile.ejs 文件中添加一个链接来更改页脚上方的下部?