Python中如何打印数量级为1e2的numpy数组元素及其个数
解决numpy数组筛选数量级为1e2元素的问题
问题分析
原代码中A == 1e2是严格匹配等于100的元素,但数组里的目标元素是4.22134987e+02(即422.13...),并非正好等于100,因此无法匹配到任何元素,输出空数组。我们需要筛选的是数量级为1e2的元素,也就是绝对值在100(1e2)到1000(1e3)之间的数值。
正确代码实现
import numpy as np A = np.array([4.22134987e+02, 4.22134987e+02, 4.22134987e+02, 4.22134987e+02, 4.22134987e+02, -7.07598661e-11, -6.80734822e-11, 8.24084601e-11]) # 筛选数量级为1e2的元素:绝对值在1e2到1e3之间 mask = (np.abs(A) >= 1e2) & (np.abs(A) < 1e3) filtered = A[mask] # 统计个数和唯一元素值(示例中符合条件的元素均为同一值) count = len(filtered) unique_val = np.unique(filtered)[0] print([count, unique_val])
代码说明
- 筛选逻辑:用
np.abs(A) >= 1e2和np.abs(A) < 1e3确定数量级为1e2的元素,这是因为数量级1e2指数值的绝对值处于102到103区间内。 - 统计与取值:
len(filtered)得到符合条件的元素总个数,np.unique(filtered)提取唯一的元素值(若有多个不同的符合条件元素,可直接输出所有唯一值)。 - 输出结果:运行后会输出
[5, 422.134987](或科学计数法格式的4.22134987e+02),与期望输出一致。
内容的提问来源于stack exchange,提问作者rajunarlikar123
相关产品推荐
相关产品推荐

