numpy一维数组:默认情况下是行矩阵还是列矩阵?

时间:2018-09-23 03:01:04

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

在下面的代码中,我正在创建2个numpy数组。一个是1D,另一个是2D。

当我转置一维数组时,它保持不变。 从行矩阵到列矩阵都不会改变。 当我转置2D数组时,它从行矩阵更改为列矩阵

代码:

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()函数执行矩阵乘法的任务。 如果真是这样,那么根据矩阵乘法的规则,因为第一个矩阵的列数必须等于秒矩阵的行数,所以在一种情况下是否不应该出错?

1 个答案:

答案 0 :(得分:1)

  1. 不,那不是行矩阵
  2. 否,因为a不是行矩阵
  3. 是的,假设“行矩阵” 是指“具有一行N列的二维数组”
  4. 是的,假设“列矩阵” 是指“具有N行和一列的2D数组”
  5. 使用一组括号,您根本不会创建“矩阵”(读取:2D数组)。

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