首先是一个简单的例子
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)])))
产生
^{2}$这与print(np.bmat(e.tolist()))
或print(np.bmat([[a,b],[c,d]]))
的结果完全相同(对np.bmat
创建一个可以使用np.asarray()
进行转换的numpy矩阵进行模化)。在
但是,我的问题是,我有一个代码,我创建了一个36个大的numpy数组(目前,会变得更晚,比如400个)2D numpy数组,我想从中创建一个大块头numpy数组。我想高效地执行此操作,如果可能的话,避免在列表和numpy数组之间进行任何转换,因为这是一个更大的循环构造的一部分,因此将执行多次(数组每次都不同)。有可能吗?在
如果您检查从
e
中绘制元素的顺序以生成所需的输出,您会发现我们需要沿着轴3,然后是1,然后是2,然后是0。reshape
沿着轴3、轴2、轴1、轴0绘制元素,因此我们在调用reshape
之前交换轴1和轴2。在相关问题 更多 >
编程相关推荐