arrays - 如何获取满足特定条件的列表值?
问题描述
我是 Python 的入门成员。我正在实现代码以使用 Python 组织数据。我必须从众多列表中提取一个仅满足某些条件的值。看起来很简单,但对我来说感觉太难了。
首先,让我用最简单的例子来解释
solutions
Out[73]:
array([[ 2.31350622e-04, -1.42539948e-02, -7.17361833e-02,
2.17545418e-01, -3.38251827e-01, 1.88254191e-01],
[ 4.23523963e-82, -9.48255372e-81, 5.22018863e-80,
-1.11271010e-79, 1.03507672e-79, -3.55573390e-80],
[ 2.31350597e-04, -1.42539951e-02, -7.17361800e-02,
2.17545409e-01, -3.38251817e-01, 1.88254187e-01],
[ 2.58309722e-02, -6.21550000e-01, 3.41867505e+00,
-7.53828444e+00, 7.09091365e+00, -2.39409614e+00],
[ 2.31350606e-04, -1.42539950e-02, -7.17361809e-02,
2.17545411e-01, -3.38251820e-01, 1.88254188e-01],
[ 1.14525725e-02, -3.25174709e-01, 2.11632584e+00,
-5.16113713e+00, 5.12508331e+00, -1.78380602e+00],
[ 9.75839726e-03, -3.08729919e-01, 2.26983591e+00,
-6.16462170e+00, 6.76409438e+00, -2.55992476e+00],
[ 1.13190092e-03, -6.72042220e-02, 7.10413638e-01,
-2.39952623e+00, 2.94849402e+00, -1.18046338e+00],
[ 5.24406689e-03, -1.86240596e-01, 1.36500589e+00,
-3.61106144e+00, 3.75606312e+00, -1.34699295e+00]])
coeff
Out[74]:
array([[ 1.03177808e-04, -6.35700011e-03, -3.19929208e-02,
9.70209594e-02, -1.50853634e-01, 8.39576506e-02,
4.45980248e-01],
[ 5.13911499e-83, -1.15062991e-81, 6.33426960e-81,
-1.35018220e-80, 1.25598048e-80, -4.31459067e-81,
1.21341776e-01],
[ 1.03177797e-04, -6.35700027e-03, -3.19929194e-02,
9.70209556e-02, -1.50853630e-01, 8.39576490e-02,
4.45980249e-01],
[ 4.26209161e-03, -1.02555298e-01, 5.64078896e-01,
-1.24381145e+00, 1.16999559e+00, -3.95024121e-01,
1.64999272e-01],
[ 1.03177801e-04, -6.35700023e-03, -3.19929198e-02,
9.70209566e-02, -1.50853631e-01, 8.39576495e-02,
4.45980248e-01],
[ 2.27512838e-03, -6.45980810e-02, 4.20421959e-01,
-1.02529362e+00, 1.01813129e+00, -3.54364724e-01,
1.98656535e-01],
[ 1.42058482e-03, -4.49435521e-02, 3.30432790e-01,
-8.97418681e-01, 9.84687293e-01, -3.72662657e-01,
1.45575629e-01],
[ 2.46722650e-04, -1.46486353e-02, 1.54850246e-01,
-5.23029411e-01, 6.42688990e-01, -2.57307904e-01,
2.17971950e-01],
[ 1.30617191e-03, -4.63880878e-02, 3.39990392e-01,
-8.99429225e-01, 9.35545685e-01, -3.35503798e-01,
2.49076135e-01]])
在一个定义为'numpy'的矩阵中,称为'solutions',每一行代表'solutions[0]','solutions[1]','solutions[i]'......另外,'coeff'也被定义了作为'numpy','coeff[0]','coeff[1]','coeff[i]'...匹配到'solutions[0]','solutions[1]','solutions[一世]'...
我现在想要的是找到特定的 'solution[i]' 和 'coeff[i]' 其中解决方案 [i] 的所有元素都小于 10^-10 并且 coeff[i] 的所有元素都大于 10 ^-3。
我想知道在满足多个条件的情况下是否有合适的代码来提取列表数组。我是 Python 发起人,请见谅。
解决方案
这可以使用高级索引来完成:
solution_valid = np.all(solutions < 10e-10, axis=1)
coeff_valid = np.all(coeff > 1e-3, axis=1)
both_valid = coeff_valid & solution_valid
valid_solutions = solutions[both_valid]
valid_coeffs = coeff[both_valid]
但也许您的意思是绝对值应该大于或低于某个阈值?
solution_valid = np.all(np.abs(solutions) < 10e-10, axis=1)
coeff_valid = np.all(np.abs(coeff) > 1e-3, axis=1)
both_valid = coeff_valid & solution_valid
valid_solutions = solutions[both_valid]
valid_coeffs = coeff[both_valid]
推荐阅读
- python - 解析多参数命令行样式的最佳方法是什么?
- javascript - 在移动宽度下从汉堡菜单响应显示内容的问题
- javascript - Victory Native - Victory Stack 仅呈现两个组之一的标签
- python - 如何在 ffmpeg-python 包中使用 libx265 (H.265)?
- c# - SPFieldLookup 以编程方式“添加一列以显示这些附加字段中的每一个”
- python - django、gunicorn、grpc:如果使用 gunicorn 运行 django grpc 客户端,则“无法选择子频道”
- python - Python pandas 通过模式(同一列-A)相对于 pandas 数据框中的另一列替换一列(A)的 NaN 值
- django - 在easy_thumbnail django中使用图片URL
- excel - 如何根据单元格值将行内的范围从一个Excel工作表复制到另一个工作表
- python - 用于 Web 应用程序的 Pandas GUI 类工具,用于从 Python 数据框制作图表而无需编码