gpt4 book ai didi

python - 从 2D numpy 数组的 numpy 数组高效创建 block numpy 数组

转载 作者:行者123 更新时间:2023-11-30 22:45:22 26 4
gpt4 key购买 nike

首先是一个简单的例子

import numpy as np

a = np.ones((2,2))
b = 2*np.ones((2,2))
c = 3*np.ones((2,2))
d = 4*np.ones((2,2))
e = np.array([[a,b],[c,d]])
print(np.vstack(np.array([np.hstack(e[i,:]) for i in range(2)])))

产生

[[ 1.  1.  2.  2.]
[ 1. 1. 2. 2.]
[ 3. 3. 4. 4.]
[ 3. 3. 4. 4.]]

print(np.bmat(e.tolist()))print(np.bmat([[a,b],[ c,d]])) (以 np.bmat 创建一个可以使用 np.asarray() 进行转换的 numpy 矩阵为模)。

但是,我的问题是,我有一段代码,我创建了一个包含 36 个(目前,以后会变得更多,比如 400 个)2D numpy 数组的大 numpy 数组,并且我想创建一个大块 numpy 数组其中。我想有效地做到这一点,如果可能的话,避免列表和 numpy 数组之间的任何转换,因为这是更大循环构造的一部分,因此将执行多次(数组每次都不同)。这可能吗?

最佳答案

np.swapaxes(e, 1, 2).reshape([4, 4])

如果您检查从 e 绘制元素以产生所需输出的顺序,您会发现我们想要沿着轴 3,然后是 1,然后是 2,然后是 0 .reshape 沿着轴 3、然后是 2、然后是 1、然后是 0 绘制元素,因此我们在调用 reshape 之前交换轴 1 和 2。

关于python - 从 2D numpy 数组的 numpy 数组高效创建 block numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206941/

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