【问题标题】:Numpy 1D array: Row or Column Matrix by Default?Numpy 一维数组:默认情况下是行矩阵还是列矩阵?
【发布时间】:2018-09-23 03:01:04
【问题描述】:

在下面的代码中,我创建了 2 个 numpy 数组。一个是一维的,另一个是二维的。

当我转置一维数组时,它保持不变。它不会从行矩阵变为列矩阵。 当我转置二维数组时,它从行矩阵变为列矩阵

代码:

a = np.array([1,2,3,4,5])
print("a: ", a)
print("a.T: ", a.T)
b = np.array([[1,2,3,4,5]])
print("b: ", b)
print("b.T: ", b.T)

输出:

   a:  [1 2 3 4 5]
 a.T:  [1 2 3 4 5]
   b:  [[1 2 3 4 5]]
 b.T:  [[1]
        [2]
        [3]
        [4]
        [5]]

现在,我有一些问题:

  1. a = np.array([1,2,3,4,5]),这真的会创建一个行矩阵吗?

  2. print("a.T: ", a.T) 是否将行矩阵隐式转换为列矩阵?还是真的保持不变?

  3. b = np.array([[1,2,3,4,5]])真的会创建一个行矩阵吗?

  4. print("b.T: ", b.T) 是否将行矩阵转换为列矩阵?我的意思是,我说的对吗?

  5. 或者,如果我创建一个只有一个括号的 numpy 数组,则根本没有问题或行或列矩阵?

还有一件事,当执行点操作时,我得到以下内容:

代码:

print(b.dot(a))
print(b.dot(a.T))

输出:

[55]
[55]

但是,就我而言,dot() 函数执行矩阵乘法的任务。 如果是这样的话,根据矩阵乘法的规则,第一个矩阵的列数必须等于秒矩阵的行数,是不是应该有一个错误?强>

【问题讨论】:

  • 你一直用矩阵这个词,但这些都不是矩阵,它们都是数组
  • a 具有形状 (5,); b (1,5). transpose` 反转形状 - 但不添加尺寸。在使用 numpy 时,迟早您会想要放弃“矩阵/向量”术语,而专注于形状。

标签: python python-3.x numpy matrix matrix-multiplication


【解决方案1】:
  1. 不,这不是 Numpy 中的行矩阵,因为它只有一维 (5,)

  2. 不,因为a 不是行矩阵(参见 1)

  3. 是的,假设 "行矩阵" 你的意思是 "2D array with one row and N columns"

  4. 是的,假设 “列矩阵” 您的意思是 “N 行一列的二维数组”

  5. 使用一组括号,您根本不会创建一个“矩阵”(读取:二维数组),而只是一个一维数组

  6. (?)The documentation for np.dot 明确表示在某些特殊情况下它只是矩阵乘法。

【讨论】:

    猜你喜欢
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2019-08-30
    相关资源
    最近更新 更多