[英]Difference between a numpy array and a numpy vector
我想知道這兩行代碼的區別
X_train = training_dataset.iloc[:, 1].values
X_train = training_dataset.iloc[:, 1:2].values
我的猜測是后者是二維 numpy 陣列,前者是一維 numpy 陣列。 對於神經網絡中的輸入,后者是輸入數據的正確方式,是否有具體原因?
請幫忙!
不完全是,他們都有ndim = 2,只需這樣做檢查:
X_train.ndim
不同之處在於,在第二個維度中,如果您想查看形狀之間的差異,我建議您閱讀以下內容: Difference between numpy.array shape (R, 1) and (R,)
不同之處在於 iloc 返回一個帶有單行或單列的系列,但 Dataframe 具有多行或多列范圍參考
雖然它們都引用第 1 列,但 1 和 1:2 是不同的類型,1 表示 int,1:2 表示 slice。
和,
X_train = training_dataset.iloc[:, 1].values
您指定單個列,因此 training_dataset.iloc[:, 1] 是 Pandas 系列,所以.values 是一維 Numpy 數組
與,
X_train = training_dataset.iloc[:, 1:2].values
雖然它變成一列,但 [1:2] 是一個切片,您表示列范圍,因此 training_dataset.iloc[:, 1:2] 是 Pandas Dataframe。 因此, .values 是一個二維 Numpy 數組
測試如下:
創建training_dataset Dataframe
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'>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.