Вы можете использовать функции head()
(или first()
), чтобы увидеть, имеет ли DataFrame
одну строку. Если это так, это не пусто.
Если есть путаница, (3,)
не означает, что отсутствует измерение. Запятая является частью стандартной нотации Python для одного элемента кортежа. Формы (1,3), (3,), and (3,1)
различны,
Хотя они могут содержать одни и те же 3 элемента, их использование в вычислениях (broadcasting
) отличается, их формат печати отличается, а их эквивалент списка отличается:
In [21]: np.array([1,2,3])
Out[21]: array([1, 2, 3])
In [22]: np.array([1,2,3]).tolist()
Out[22]: [1, 2, 3]
In [23]: np.array([1,2,3]).reshape(1,3).tolist()
Out[23]: [[1, 2, 3]]
In [24]: np.array([1,2,3]).reshape(3,1).tolist()
Out[24]: [[1], [2], [3]]
И нам не нужно останавливаться на добавлении только одного размера синглтона:
In [25]: np.array([1,2,3]).reshape(1,3,1).tolist()
Out[25]: [[[1], [2], [3]]]
In [26]: np.array([1,2,3]).reshape(1,3,1,1).tolist()
Out[26]: [[[[1]], [[2]], [[3]]]]
В numpy
массив может иметь 0, 1, 2 или больше размеров. 1 так же логичен, как 2.
В MATLAB матрица всегда имеет 2 dim (или больше), но это не обязательно должно быть таким. Строго говоря, MATLAB даже не имеет скаляров. Массив с формой (3) не имеет измерения только в том случае, если в качестве стандарта принимается MATLAB.
numpy
построен на Python, который является скалярами и списками (которые могут гнездиться). Сколько размеров имеет список Python?
Если вы хотите попасть в историю, MATLAB был разработан как интерфейс для набора линейных алгоритмов Fortran. Учитывая проблемы, эти подпрограммы решили концепцию матрицы с 2-мя измерениями, а аргументы строк и столбцов имели смысл. Это было не до версии 3.что-то, что MATLAB было обобщено, чтобы допускать более двух измерений (в конце 1990-х годов).
numpy
основан на нескольких попытках предоставить массивы Python (например, numeric
). Эти разработчики взяли более общий подход к массивам, где 2d было искусственным ограничением. Это имеет приоритет в компьютерных языках и математике (и физике). APL была разработана в 1960-х годах, сначала как математическая нотация, а затем как компьютерный язык. Как и numpy
, его arrays
может быть 0d или выше. (Поскольку я использовал APL до того, как использовал MATLAB, подход numpy
кажется вполне естественным.)
В APL
нет отдельных списков или кортежей. Таким образом, форма array
, rho A
сама является массивом, а rho rho A
является числом измерений A, также называемым rank
.