在[0,1]中生成一个10 x 3的随机数组。
对于每一行,选择最接近0.5的数字。
使用
abs
和argmin
查找每行最近的列
我不明白解决方案,你能帮帮我吗?
x1 = np.random.random([10,3])
print(x1)
c05 = [a[np.abs(a-0.5).argmin()] for a in x1]
print(c05)
答案 0 :(得分:0)
首先,我们使用创建一个10x3数组
x1 = np.random.random([10,3])
然后我们想逐个迭代行来选择数字壁橱为0.5。
我们只需要找到当前行中使用0.5的最小(绝对值)。为了找到最小的元素,我们可以使用argmin()函数,它返回indices of the minimum values along an axis
。
我们可以简单地写一下:
result = []
for row in x:
distance = np.abs(row-0.5)
smallest_index = distance.argmin()
result.append(row[smallest_index])
以list comprehension
形式编写上述代码,我们得到您的解决方案。
答案 1 :(得分:0)
好的,这是解释:
#this just creates an array 10x3
x1 = np.random.random([10,3])
#prints the array
print(x1)
现在下一位是实际逻辑发生的地方。让我们分解一下:
首先我们测量行数据点和0.5之间的差异,这是我们想要找到最接近的值的点。然后我们采取绝对的价值,因为我们不关心差异是消极的还是积极的。
np.abs(a-0.5)
然后在对行进行这样的转换之后,我们找到该值最小的索引。
np.abs(a-0.5).argmin()
之后我们只提取该索引的值
a[np.abs(a-0.5).argmin()]
对每一行执行此操作会导致列表理解,如下所示:
[a[np.abs(a-0.5).argmin()] for a in x1]
然后我们打印结果。
希望这有帮助。