python - numpy 数组和 numpy 向量之间的区别
问题描述
我想知道这两行代码的区别
X_train = training_dataset.iloc[:, 1].values
X_train = training_dataset.iloc[:, 1:2].values
我的猜测是后者是一个二维 numpy 数组,而前者是一个一维 numpy 数组。对于神经网络中的输入,后者是输入数据的正确方式,是否有具体原因?
请帮忙!
解决方案
不同之处在于 iloc 返回一个带有单行或单列的系列,但一个具有多行或多列范围引用的数据框
虽然它们都引用第 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 数据框。因此, .values 是一个 2D Numpy 数组
测试如下:
创建 training_dataset 数据框
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'>
推荐阅读
- flutter - 'showSnackBar' 已弃用,不应使用
- python - 如何将抓取的元素放入一个列表 BeautifulSoup?
- python - Selenium 与 Python:消息:元素
- javascript - 复制浏览器 URL 栏的特定部分
- regex - 如何使用正则表达式从 vscode 用户片段中的 TM_FILEPATH 返回目录?
- compiler-construction - 证明不是 LALR(1) 的 LR(1) 文法必须只有 reduce/reduce 冲突
- ghost-blog - 如何在子目录上制作幽灵主页?
- c# - 为什么我在此代码的循环中出现错误?
- java - 从现有变量创建映射(例如,Java 等价于 JavaScript 的 `{varA, varB, varC}`)
- html - 在模板中动态加载背景图片