【发布时间】:2017-03-30 04:41:34
【问题描述】:
我需要创建一个二维数组,其中每一行可能以不同的数字开始和结束。假设给出了每行的第一个和最后一个元素,并且所有其他元素只是根据行的长度进行插值在一个简单的情况下,假设我想创建一个 3X3 数组,该数组在 0 处具有相同的开始,但由下面的 W 给出不同的结束:
array([[ 0., 1., 2.],
[ 0., 2., 4.],
[ 0., 3., 6.]])
有没有比以下更好的方法来做到这一点:
D=np.ones((3,3))*np.arange(0,3)
D=D/D[:,-1]
W=np.array([2,4,6]) # last element of each row assumed given
Res= (D.T*W).T
【问题讨论】:
-
如果你想使用 pandas:
pd.Series(W).apply(lambda e: np.linspace(0, e, 3)) -
基本上你有两个向量(矩阵的第一列和最后一列),对吗?然后你想为每一行插入一些值。
-
@dayum 如果你想改变起始位置,它是相同的方法,但是你构建一个带有两个向量 start 和 stop 的 df,然后你再次调用 apply ,lambda 参数是 df.start , df.end, 3
标签: python numpy multidimensional-array vectorization array-broadcasting