np.genfromtxt('house_price.csv', delimiter=',', dtype=None, encoding=None)
дает вам обычный (2D) массив numpy, в котором все элементы имеют одинаковый тип d (в вашем случае '<U27'
).
С skip_header
вы получаете структурированную (1D) массив, где каждая запись является записью из 21 элемента (полей):
data[:1]
#array([('Abbotsford', '68 Studley St', 2, 'h', -1, 'SS', 'Jellis', '3/09/2016', 2.5, 3067, 2, 1, 1, 126, nan, -1, 'Yarra City Council', -37.8014, 144.9958, 'Northern Metropolitan', 4019)],
# dtype=[('f0', '<U18'), ('f1', '<U27'), ('f2', '<i4'), ('f3', '<U1'), ('f4', '<i4'), ('f5', '<U2'), ('f6', '<U27'), ('f7', '<U10'), ('f8', '<f8'), ('f9', '<i4'), ('f10', '<i4'), ('f11', '<i4'), ('f12', '<i4'), ('f13', '<i4'), ('f14', '<f8'), ('f15', '<i4'), ('f16', '<U30'), ('f17', '<f8'), ('f18', '<f8'), ('f19', '<U26'), ('f20', '<i4')])
Здесь каждый «столбец» (так сказать) имеет свой собственный тип dtype. Итак, numpy проделал большую работу по разделению столбцов, вы просто не видите его, глядя на вывод shape
.
С names=True
(без пропуска заголовка) вы получите тот же результат (структурированный массив), но с правильными именами полей вместо 'f0' ... 'f20'.
Возможно, вы захотите взглянуть на
панд . Вы можете создать фрейм данных с помощью
import pandas as pd
df = pd.read_csv('house_price.csv')
. Это даст вам фрейм данных из 13581 строк и 21 столбца, каждый из которых имеет свой собственный тип данных. Если вам нужны данные в виде массива NumPy, вы можете получить их из кадра данных с помощью df.to_numpy()
:
df.to_numpy()[:2]
#array([['Abbotsford', '68 Studley St', 2, 'h', nan, 'SS', 'Jellis',
# '3/09/2016', 2.5, 3067.0, 2.0, 1.0, 1.0, 126.0, nan, nan,
# 'Yarra City Council', -37.8014, 144.9958,
# 'Northern Metropolitan', 4019.0],
# ['Abbotsford', '85 Turner St', 2, 'h', 1480000.0, 'S', 'Biggin',
# '3/12/2016', 2.5, 3067.0, 2.0, 1.0, 1.0, 202.0, nan, nan,
# 'Yarra City Council', -37.7996, 144.9984,
# 'Northern Metropolitan', 4019.0]], dtype=object)
или использовать df.to_records()
для получения структурированного массива NUMPY.