Разница между массивом numpy и вектором numpy - PullRequest
0 голосов
/ 03 апреля 2020

Я хотел бы узнать разницу между этими двумя строками кода

 X_train = training_dataset.iloc[:, 1].values
 X_train = training_dataset.iloc[:, 1:2].values

Я предполагаю, что последний является массивом 2-D numpy, а первый - 1-D numpy массив. Для входов в нейронной сети последний является подходящим способом ввода данных, есть ли конкретная c причина для этого?

Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Разница между значениями ilo c возвращает серию с одной строкой или столбцом, но диапазон данных с несколькими диапазонами строк или столбцов ссылка

Хотя оба они относятся к столбцу 1 , 1 и 1: 2 - это разные типы, где 1 представляет целое число, а 1: 2 представляет срез.

С,

X_train = training_dataset.iloc[:, 1].values

Вы указываете один столбец, так что training_dataset.iloc [:, 1] представляет собой серию Pandas, поэтому .values ​​представляет собой массив 1D Numpy

Vs.,

X_train = training_dataset.iloc[:, 1:2].values

Несмотря на то, что он становится одним столбцом, [1: 2] представляет собой фрагмент, представляющий диапазон столбцов, поэтому training_dataset.iloc [:, 1: 2] представляет собой Pandas Dataframe. Таким образом, .values ​​представляет собой двумерный Numpy массив

. Тест выполняется следующим образом:

Создать обучающий набор данных

data = {'Height':[1, 14, 2, 1, 5], 'Width':[15, 25, 2, 20, 27]} 
training_dataset = pd.DataFrame(data)

Использование .iloc [:, 1]

print(type(training_dataset.iloc[:, 1]))
print(training_dataset.iloc[:, 1].values)

# Result is: 
<class 'pandas.core.series.Series'>
# Values returns a 1D Numpy array
0    15
1    25
2     2
3    20
4    27
Name: Width, dtype: int64, 

Использование iloc [:, 1: 2]

print(type(training_dataset.iloc[:, 1:2]))
print(training_dataset.iloc[:, 1:2].values)
# Result is: 
<class 'pandas.core.frame.DataFrame'>
# Values is a 2D Numpy array (since values of Pandas Dataframe)
[[15]
 [25]
 [ 2]
 [20]
 [27]], 
X_train Values Var Type <class 'numpy.ndarray'>
1 голос
/ 03 апреля 2020

Не совсем так, у них обоих есть ndim = 2, просто проверьте, выполнив это:

X_train.ndim

Разница в том, что во втором у него нет определенного второго измерения, если вы хотите чтобы увидеть разницу между формами, я предлагаю прочитать это: Разница между numpy. массивом (R, 1) и (R,)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...