首页 > 解决方案 > Python 是否支持按列声明矩阵?

问题描述

Python numpy中声明矩阵时,我使用np.array([[row 1], [row 2], . . . [row n]])形式。这是逐行声明矩阵。他们在Python中是否有任何工具可以按列声明矩阵?我希望像 - np.array([[col 1], [col 2], . . . [col n]], parameter = 'column-wise')这样产生一个具有 n 列的矩阵。

我知道这样的事情可以通过转置来实现。但是有没有办法根据我提供的参数值将np.array([...], parameter = '...')视为行或列?

*** np.array()在这里仅用作虚拟对象。任何具有上述所需功能的功能都可以。

标签: pythonarraysnumpymatrix

解决方案


In [65]: np.array([[1,2,3],[4,5,6]])
Out[65]: 
array([[1, 2, 3],
       [4, 5, 6]])

有一整套concatenate函数,可以帮助您以各种方式加入数组。

stack使用默认轴的行为很像np.array

In [66]: np.stack([[1,2,3],[4,5,6]], axis=0)
Out[66]: 
array([[1, 2, 3],
       [4, 5, 6]])

np.vstack也这样做。

但是要制作列:

In [67]: np.stack([[1,2,3],[4,5,6]], axis=1)
Out[67]: 
array([[1, 4],
       [2, 5],
       [3, 6]])

np.column_stack([[1,2,3],[4,5,6]])做同样的事情。

转置也是一种选择:np.array([[1,2,3],[4,5,6]]).T.

所有这些 '*stack' 函数最终都使用np.concatenate,因此值得您花时间学习直接使用它。您可能需要向输入添加维度。

[66] 确实(在幕后):

In [72]: np.concatenate((np.array([1,2,3])[:,None], np.array([4,5,6])[:,None]),axis=1)
Out[72]: 
array([[1, 4],
       [2, 5],
       [3, 6]])

推荐阅读