我还是scikit learn和numpy的新手。我读了教程,但我不明白它们是如何定义数组维度的。
在以下示例中:
>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5)
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
数组每行有五个变量,所以我希望它有5个维度。
为什么a.ndim
等于2?
鉴于您正在使用scikit-learn,我将在机器学习的背景下对此进行解释,因为它可能更有意义。。。
你的特征矩阵(我认为这就是你在这里所说的)通常是二维的(因此为什么是ndim = 2
),因为你有行(占据一维)和列(占据二维)
在机器学习的情况下,我通常认为行是样本,列是特征。
但是,请注意,每个维度可以有多个条目(例如,您将有多个样本/行和多个列/特征)。这条曲线会告诉你该尺寸的大小。
所以在你的情况下:
>>> a
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
您有一个长度/大小为3的尺寸标注。第二个维度有5个条目。例如,您可以将其视为包含3个样本和5个特征/变量的特征矩阵。
总而言之,您有2个维度(ndim = 2
),但数组的特定大小由shape tuple表示,它告诉这2个维度中的每个维度有多大。
此外,(3,5,2)
将是具有3个维度的矩阵,其中第3个维度具有2个值
我认为这里的关键是,至少在二维的情况下,不要把它看作嵌套的列表或嵌套的向量(当你考虑[]
时,这就是它的样子),而是把它看作一个有行和列的表。当您以
shape
元组和ndim
将更有意义Dimension表示有一个.shape元组的长度。ndarray的形状是(3,5),因为它有3行5列。这正是你想要找到的,不是吗?
我把Frame和Array弄错了,数组是根据如何找到数字来判断的,找到数字需要多少步,在这种情况下,你需要先找到行,然后找到行。但在Frame中,对于一个实例,该实例拥有一行,其中的所有行都描述了它的属性,或称之为变量或维度来定义实例。在Frame中,可以使用二维数组来定义多维实例。
所以你需要两个步骤才能找到数字,就像你可以用[][]来定位
Array
1 4 5
2 3 6
一样但在帧
Length Height Weight
中这是一个框架,实际上是一个三维的"数组",但它不是数组。
1 23 34 56
2 89 87 63