首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同形状复制值的级联数组

具有不同形状复制值的级联数组
EN

Stack Overflow用户
提问于 2021-01-19 21:52:45
回答 3查看 67关注 0票数 1

我有一个具有形状的数组:(15,2)。我还有另一个带有值的数组:[0, 3, 5]

我想在第一个数组中创建另一个列,其值来自第二个数组,其中前5行的值为0,行6-10的值为3,最后5行的值为5。

就像这样:

代码语言:javascript
复制
[0,
 0,
 0,
 0,
 0,
 3,
 3,
 3,
 3,
 3,
 5,
 5,
 5,
 5,
 5]

有什么方法可以做到这一点吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-01-19 22:14:38

您可以使用numpy的内置repeatstacking:

代码语言:javascript
复制
a = np.zeros((15,2))
b = np.array([0,3,5])
np.hstack((a, np.repeat(b,5)[:,None]))

产出:

代码语言:javascript
复制
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 3.]
 [0. 0. 3.]
 [0. 0. 3.]
 [0. 0. 3.]
 [0. 0. 3.]
 [0. 0. 5.]
 [0. 0. 5.]
 [0. 0. 5.]
 [0. 0. 5.]
 [0. 0. 5.]]
票数 2
EN

Stack Overflow用户

发布于 2021-01-19 22:04:55

使用np.concatenate

  • 将第二个数组int转换为2d“向量”数组,其中每一行都有1列

代码语言:javascript
复制
a = [0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5] # your list of [0, 3, 5]
a = np.array([a]).T # [ [0], [0], [0], ..., [5] ] the "vector" array

然后简单地

代码语言:javascript
复制
b = np.array([[i, i +1] for i in range(15)]) # some example 15x2 array
print(np.concatenate((b, a), axis=1)) 

输出是

代码语言:javascript
复制
array([[ 0,  1,  0],
       [ 1,  2,  0],
       [ 2,  3,  0],
       [ 3,  4,  0],
       [ 4,  5,  0],
       [ 5,  6,  3],
       [ 6,  7,  3],
       [ 7,  8,  3],
       [ 8,  9,  3],
       [ 9, 10,  3],
       [10, 11,  5],
       [11, 12,  5],
       [12, 13,  5],
       [13, 14,  5],
       [14, 15,  5]])
票数 0
EN

Stack Overflow用户

发布于 2021-01-19 22:12:58

代码语言:javascript
复制
rand = np.random.random((15,2)) # shape is (15,2)
vals = np.array([0,3,5]) # shape is (3,)
res = np.concatenate(([np.full((rand.shape[0]//vals.shape[0],), val) for val in vals]), axis=0)
res

产出:

代码语言:javascript
复制
array([0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5])

最后,

代码语言:javascript
复制
final = np.hstack((rand, res.reshape(15,1)))
final

产出:

代码语言:javascript
复制
array([[0.29759807, 0.60548479, 0.        ],
       [0.61242249, 0.46456274, 0.        ],
       [0.86172011, 0.2963868 , 0.        ],
       [0.91728575, 0.36366023, 0.        ],
       [0.56488556, 0.82130321, 0.        ],
       [0.59482141, 0.46148353, 3.        ],
       [0.7762271 , 0.25415058, 3.        ],
       [0.09176551, 0.9687253 , 3.        ],
       [0.06473259, 0.34686598, 3.        ],
       [0.69542414, 0.15540001, 3.        ],
       [0.02880707, 0.23169327, 5.        ],
       [0.90004256, 0.22145591, 5.        ],
       [0.61596969, 0.46807342, 5.        ],
       [0.02263769, 0.68522023, 5.        ],
       [0.81777274, 0.58145853, 5.        ]])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65800065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档