numpy块矩阵是如何工作的?

2024-09-19 22:34:51 发布

您现在位置:Python中文网/ 问答频道 /正文

这个代码的结果对我来说毫无意义:

a = np.zeros((2, 2))
b = np.bmat([[a, a], [a, a]])
print(b.shape, b.dot(np.zeros(4)).shape)

形状为(4, 4)的矩阵在其最后一个轴上进行和积时,如何返回形状为(1, 4)的矩阵?在


Tags: 代码npzeros矩阵dot形状printshape
2条回答

bmat返回一个numpy.matrix实例,就像那些你不应该使用的东西一样,因为它们会导致各种奇怪的不兼容性。numpy.matrix总是试图保持至少两个维度,因此{}是2D而不是1D

做一个numpy.array

b = np.bmat([[a, a], [a, a]]).A
#                             ^

或者从1.13开始

^{pr2}$

bmat不做任何异国情调或花哨的事情;基本上,它只是连接的几个级别:

In [308]: np.bmat([[a,a],[a,a]]).A
Out[308]: 
array([[0, 1, 0, 1],
       [2, 3, 2, 3],
       [0, 1, 0, 1],
       [2, 3, 2, 3]])

In [309]: alist = [[a,a],[a,a]]
In [310]: np.concatenate([np.concatenate(sublist, axis=1) for sublist in alist], axis=0)
Out[310]: 
array([[0, 1, 0, 1],
       [2, 3, 2, 3],
       [0, 1, 0, 1],
       [2, 3, 2, 3]])

相关问题 更多 >