【发布时间】:2019-08-14 20:27:29
【问题描述】:
我需要帮助来解决以下问题:
首先使用np.empty 创建一个与d 具有相同形状(即2x3x5)的空数组f。
填充f 中的值。对于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中的相应值。
我正在尝试使用列表推导来执行此操作,而不是 for 循环。
这就是我所做的:
import numpy as np
f = np.empty([2,3,5])
f1 = [25 if d_min<item<d_mean else 75 if d_mean<item< d_max else 0 if item == d_min else 100 for out_list in d for in_list in out_list for item in in_list]
print(f1)
这是我得到的:
[75, 75, 25, 25, 25, 25, 75, 75, 75, 25, 25, 100, 25, 25, 25, 75, 75, 75, 25, 75, 75, 75, 75, 25, 0, 25, 75, 75, 25, 75]
最终的结果应该是这样的:
array([[[ 75., 75., 75., 25., 75.],
[ 75., 75., 25., 25., 25.],
[ 75., 25., 75., 75., 75.]],
[[ 25., 25., 25., 25., 100.],
[ 75., 75., 75., 75., 75.],
[ 25., 75., 0., 75., 75.]]])
你能帮我找出问题吗?
【问题讨论】:
标签: python python-3.x numpy for-loop list-comprehension