簡體   English   中英

numpy 數組和 numpy 向量之間的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM