所以我的大问题是,我有很多形状,比如说(754,580)。首先,我想用随机数填充这个数组(来自截断的正态分布)。这是非常简单的,scipy.stats.truncnorm.rvs(..., size= (754, 580))
做到了这一点。
然而,现在我想避免有完全随机的数字。相反,我希望每个数字在中重复行和列中的次数(并在边缘被切断)。例如,假设我想用m=3填充一个(5,10),所需的输出可能如下
[[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 ]]
因为每个元素沿着每一行重复三次(除了最后一个,因为只有10,而不是12,总列),并且沿着每列重复三次(最后一个除外,因为只有5行,而不是6行)。
我相信切断非常容易处理,我可以生成一个(6,12)数组,然后只选择第一个(5,10)片。但是我很难让重复出现在x和y两个方向,就像在例子中一样。
我怎样才能为一般的m
做到这一点?
TLDR:
例如,如何提供m=3
[[0.32 0.569 0.532 0.75 ]
[0.158 0.49 0.33 0.12 ]]
调至(用于设定目标大小(5,10))
[[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 ]]
甚至只是
[[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 0.75 0.75 ]
[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 0.75 0.75 ]
[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 0.75 0.75 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 0.12 0.12 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 0.12 0.12 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 0.12 0.12 ]]
发布于 2021-06-03 16:48:30
我将使用np.kron
创建瓷砖,然后使用切片将其切割到所需的大小。
a = np.array([[0.32 0.569 0.532 0.75 ]
[0.158 0.49 0.33 0.12 ]])
np.kron(a, np.ones((3, 3), dtype=a.dtype))[:5, :10]
[[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.32 0.32 0.32 0.569 0.569 0.569 0.532 0.532 0.532 0.75 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 ]
[0.158 0.158 0.158 0.49 0.49 0.49 0.33 0.33 0.33 0.12 ]]
https://stackoverflow.com/questions/67825429
复制相似问题