【发布时间】: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]]
现在,我有一些问题:
a = np.array([1,2,3,4,5]),这真的会创建一个行矩阵吗?print("a.T: ", a.T)是否将行矩阵隐式转换为列矩阵?还是真的保持不变?b = np.array([[1,2,3,4,5]])真的会创建一个行矩阵吗?print("b.T: ", b.T)是否将行矩阵转换为列矩阵?我的意思是,我说的对吗?或者,如果我创建一个只有一个括号的 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