gpt4 book ai didi

python - 更改没有循环的 numpy 数组的格式

转载 作者:行者123 更新时间:2023-11-28 21:51:26 26 4
gpt4 key购买 nike

我有一个形状为 a.shape = (1,k*d) 的 numpy 数组我想将它转换为形状为 b.shape = (k*d,k) 的 numpy 数组在每一列中

b[i,j] = a[i] if j<i+1

b[i,j] = 0 if not

例如:

k = 3
d= 2
**********

A = |a| => B = |a 0 0|
|b| |b 0 0|
|c| |0 c 0|
|d| |0 d 0|
|e| |0 0 e|
|f| |0 0 f|

主要是没有循环!

我正在寻找的是一系列能产生预期结果的 numpy 矩阵运算。

最佳答案

这重现了您的示例。它可以推广到其他kd

In [12]: a=np.arange(6)    
In [13]: b=np.zeros((6,3))
In [14]: b[np.arange(6),np.arange(3).repeat(2)]=a

In [15]: b
Out[15]:
array([[ 0., 0., 0.],
[ 1., 0., 0.],
[ 0., 2., 0.],
[ 0., 3., 0.],
[ 0., 0., 4.],
[ 0., 0., 5.]])

关键是重复必要次数的列索引

In [16]: np.arange(3).repeat(2)
Out[16]: array([0, 0, 1, 1, 2, 2])

关于python - 更改没有循环的 numpy 数组的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30250164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com