【发布时间】:2018-03-23 11:31:00
【问题描述】:
假设我有 2 个 numpy 2D 数组、最小值和最大值,它们的维度总是相同的。我想创建第三个数组 results,这是将 linspace 应用于最大值和最小值的结果。有没有一些“numpy”/矢量化的方式来做到这一点?下面是示例非矢量化代码以显示我想要的结果。
import numpy as np
mins = np.random.rand(2,2)
maxs = np.random.rand(2,2)
# Number of elements in the linspace
x = 3
m, n = mins.shape
results = np.zeros((m, n, x))
for i in range(m):
for j in range(n):
min = mins[i][j]
max = maxs[i][j]
results[i][j] = np.linspace(min, max, num=x)
【问题讨论】:
-
如何缩放来自
np.linspace(0,1,num=x)的结果? -
在这种情况下如何获得最小值和最大值?
-
mins[...,None] + (maxs-mins)[...,None]*np.linspace(0,1,num=x)。这使用广播通过mins和maxs扩展linspace。
标签: python numpy vectorization