Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将中的1D数组转换为Numpy中的行或列向量_Python 3.x_Numpy - Fatal编程技术网

Python 3.x 将中的1D数组转换为Numpy中的行或列向量

Python 3.x 将中的1D数组转换为Numpy中的行或列向量,python-3.x,numpy,Python 3.x,Numpy,我对数组和向量的NumPy概念感到困惑,假设我们有一个一维数组,如下所示。从“形状”方法中,我可以看到尺寸(10,)表示一个包含10个元素的维度 a = np.arange(10) print(a) a.shape [0 1 2 3 4 5 6 7 8 9] (10,) 现在我了解了一种称为np.newaxis的方法,它可以将数组转换为行向量。所以我想知道,在NumPy中,我们是否假设行或列向量总是二维的?(我认为在线性代数中,向量可以存在于任何维度,或者当我们提到“维度”时,NumPy和线

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

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)

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

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

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

AB(i,j) = sum(A[i,k] * B[k,j])
如果我们假设行向量是维数为(1,N)的矩阵,列向量是维数为(N,1)的矩阵,则此公式对向量仍然有效

NumPy使用相同的方法。但是NumPy不仅允许二维数组,还允许一维、三维等等。这种阵列对于其他计算模型很有用。如果你对此感兴趣,你可以阅读更多关于张量的内容

您可以使用
.reformate(…)
方法重新排列
ndarray
的元素。更改数组的形状时,所有元素都保留在原来的位置,但元素的地址会更改


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

如果要重塑数组,您应该使用:

new_数组=np.重塑(旧_数组,(-1,2))

其中-1是给定数组大小的新数组大小。

只需运行以下命令:

a.reshape(-1,1)

numpy
docs中,您在哪里看到了
row vector
矢量也不是标准的。
ndarray
具有
ndim
维度,可以是0,1,2(最多32个)。很多来自MATLAB或线性代数背景的人来到
numpy
时,都会被任何没有二维(行和列)的东西弄糊涂。(10,),(1,10),(10,1)都是包含10个元素的数组形状。但(1,10,1,1)和(2,5)也是如此。您可以使用
重塑
@Flying pig获得任何形状。问题是关于术语维度还是关于更改
ndarray
的形状?