【问题标题】:Does Python support declaring a matrix column-wise?Python 是否支持按列声明矩阵?
【发布时间】:2021-01-15 06:50:56
【问题描述】:

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

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

***np.array() 在这里只是用作一个假人。具有上述所需功能的任何功能都可以。

【问题讨论】:

  • 使用pandas,按列创建数据,然后执行to_numpy() 以获得numpy 数组!或者使用column_stack 方法。
  • 这个SO answer 可能有用!

标签: python arrays numpy matrix


【解决方案1】:
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]])

【讨论】:

    【解决方案2】:

    在创建数组时,您可以使用numpy.transpose() 而不是numpy.array(),因为numpy.tranpose() 将任何“类数组”对象作为输入:

    my_array = np.transpose ([[1,2,3],[4,5,6]])
    print (my_array)
    

    输出:

    [[1 4]
     [2 5]
     [3 6]]
    

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 2015-06-25
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 2013-01-07
      相关资源
      最近更新 更多