【发布时间】:2021-03-17 21:19:00
【问题描述】:
我已经创建了一个数组 d:
d = [[[1.60269836 1.97347391 1.76414466 1.53102548 1.35352821]
[1.0153325 1.53331695 1.36105004 1.76111151 1.62595392]
[1.5156144 1.77076004 1.24249056 1.94406171 1.98917422]]
[[1.44790465 1.46990159 1.48156613 1.92963951 1.11459211]
[1.10674091 1.57711027 1.85275685 1.84640848 1.34216641]
[1.63670185 1.69894884 1.45114395 1.09750849 1.09564564]]]
有最大值、最小值和平均值:
Max value of d is: 1.98917422158341
Min value of d is: 1.0153325043494292
The mean of d is: 1.5377490722289062
我还创建了一个空数组 f:
f = np.empty((2,3,5))
f = [[[1.60269836 1.97347391 1.76414466 1.53102548 1.35352821]
[1.0153325 1.53331695 1.36105004 1.76111151 1.62595392]
[1.5156144 1.77076004 1.24249056 1.94406171 1.98917422]]
[[1.44790465 1.46990159 1.48156613 1.92963951 1.11459211]
[1.10674091 1.57711027 1.85275685 1.84640848 1.34216641]
[1.63670185 1.69894884 1.45114395 1.09750849 1.09564564]]]
有了这一切,我需要检查 d 中的每个值并且:
- 如果此 d 值大于 d_min 但小于 d_mean,则将 25 分配给 f 中的相应值。
- 如果 d 中的某个值大于 d_mean 但小于 d_max,则将 75 分配给 f 中的对应值。
- 如果值等于 d_mean,则将 50 分配给 f 中的相应值。
- 为 d 中的 d_min 将 0 分配给 f 中的相应值。
- 为 d 中的 d_max 分配 100 到 f 中的相应值。
最后,f 应该只有以下值:0、25、50、75 和 100。
到目前为止,我最好的解决方案是:
for value in d:
if value.any() > d_min and value.any() < d_mean:
value = 25
value.append(f)
if value.any() > d_mean and value.any() < d_max:
value = 75
value.append(f)
if value.any() == d_mean:
value = 50
value.append(f)
if value.any() == d_min:
value = 0
value.append(f)
if value.any() == d_max:
value = 100
value.append(f)
我没有收到任何错误,但也没有收到我需要的结果。我刚开始学习 python 和 numpy,所以我确信它会有更好的方法来做到这一点,但是在阅读了文档并查找了许多示例之后,我没有得到解决方案。
【问题讨论】:
-
添加 numpy 标签以获得更好的答案
标签: python arrays numpy for-loop if-statement