Numpy 中形状的 (4,) 和 (4,1) 有什么区别?

问题描述 投票:0回答:2

我有两个ndarray

A
B
,一个具有形状
(4,)
,另一个具有
(4,1)

当我想使用 this 计算余弦距离时,它会抛出一些异常,抱怨两个对象

are not aligned

有人对此有什么想法吗?谢谢!

python numpy scipy
2个回答
9
投票

一个是一维数组,另一个是二维数组。

示例:

>>> import numpy as np
>>> a = np.arange(4).reshape(4,1)
>>> a
array([[0],
       [1],
       [2],
       [3]])
>>> a.ravel()
array([0, 1, 2, 3])
>>> a.squeeze()
array([0, 1, 2, 3])
>>> a[:,0]
array([0, 1, 2, 3])
>>>
>>> a[:,0].shape
(4,)

0
投票

ndarray
等于
shape
(4,)
是一维 NumPy 数组。
示例,

>>> import numpy as np
>>> array_1 = np.random.randint(0,10,4)
>>> array_1
array([9, 3, 0, 4])
>>> array_1.shape    # shape of array_1
(4,)
>>> array_1.ndim    # number of dimensions in array_1
1

ndarray
shape
等于
(4,1)
是具有 4 行 1 列的 2 维 NumPy 数组。它也称为列向量。
例如,

>>> array_2 = np.random.randint(0, 10, (4,1))
>>> array_2
array([[7],
       [0],
       [5],
       [8]])
>>> array_2.shape    # shape of array_2
(4, 1)
>>> array_2.ndim    # number of dimensions in array_2
2

ndarray
shape
等于
(1,4)
是具有 1 行和 4 列的二维 NumPy 数组。它也称为行向量。
例如,

>>> array_3 = np.random.randint(0, 10, (1,4))
>>> array_3
array([[0, 5, 2, 6]])
>>> array_3.shape    # shape of array_3
(1, 4)
>>> array3.ndim    # number of dimensions in array_3
2

作为一般规则,数组开头的

[
(左方括号)的数量或数组末尾的
]
(右方括号)的数量表示数组的维数。
例如,
[1, 2, 3]
是一维数组,
[[1,2,3], [4,5,6]]
是二维数组,依此类推。

© www.soinside.com 2019 - 2024. All rights reserved.