python-3.x - 将一维数组转换为 Numpy 中的行或列向量

标签 python-3.x numpy

我对 NumPy 中数组和向量的概念感到困惑,假设我们有一个如下所示的一维数组。从“形状”方法中,我可以看到尺寸。 (10,) 表示具有 10 个元素的 1 个维度。

a = np.arange(10)
print(a)
a.shape

[0 1 2 3 4 5 6 7 8 9]
(10,)

现在我知道了一个名为 np.newaxis 的方法,用于将数组转换为行向量。所以我想知道在 NumPy 中我们是否假设行或列向量始终具有二维? (我认为在线性代数中,向量可以存在于任何维度,或者当我们提到“维度”时,NumPy 和线性代数在概念上存在差异?)。由于向量是通过调用 np.newaxis 添加 1 维来转换的。

print(a[np.newaxis:])
print(a[np.newaxis,:].shape)

[0 1 2 3 4 5 6 7 8 9]
(1, 10)

最佳答案

请注意,DIMENSION 这个词在不同的上下文中可能有不同的含义。例如在线性代数中,(1, 1) 是二维空间中的向量,(1, 1, 1) 是三维空间中的向量,在编程语言中它们都是一维数组。三维向量的集合在线性代数中是矩阵,在编程语言中是二维数组。

就线性代数而言,形状 (10,) 是 1 个 10 维向量或 10 个标量值。形状(10,2)是2个10维向量或10个2维向量。

让我们考虑线性代数矩阵乘法公式:

AB(i,j) = sum(A[i,k] * B[k,j])

如果我们假设行向量是维度 (1, N) 的矩阵,列向量是维度 (N, 1) 的矩阵,则此公式对向量仍然有效。

NumPy 使用相同的方法。但 NumPy 不仅允许 2D 数组,还允许 1D、3D 等。这样的数组对于其他计算模型很有用。如果您对此感兴趣,可以阅读有关张量的更多信息。

您可以使用 .reshape(...) 方法重新排列 ndarray 的元素。当更改数组的形状时,所有元素都保留在原位,但元素的寻址会发生变化。

如果我们假设行向量和列向量是特殊对象,我们将被迫将计算规则复杂化,这是非常不切实际的。

关于python-3.x - 将一维数组转换为 Numpy 中的行或列向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59913283/

相关文章:

python - 在 Windows 中设置项目的相对 pythonpath (Visual Studio Code)

python - 为什么 websockets 连接在浏览器重新加载时不断关闭?

python - 使用 numpy 从元组到线性方程

python - 获取最接近由python中的四个顶点定义的平面的点

python - 从文件读取时类型错误 :a bytes-like object is required, 而不是 'str'

python-3.x - 如何在 pandas 数据框中用用户定义的值填充 NaN

python - 在python中将1*5的列表(对象?)转换为df

Python - 使用 Numpy 进行相关性测试

python - 使用 apply + lambda 清理 Pandas 中的数字数据

python - scipy 中的 rv_frozen 对象是什么意思?