# 如何为机器学习索引，切片，调整 NumPy 数组

• 如何将你的列表数据转换为NumPy数组。
• 如何使用Pythonic索引和切片操作访问数据。
• 如何调整数据维数以满足某些机器学习API的输入参数的维数要求。

1. 从列表到数组
2. 数组索引
3. 数组切片
4. 数组维数调整

## 1.从列表到数组

### 一维列表转换为数组

```# one dimensional example
from numpy import array
# list of data
data = [11, 22, 33, 44, 55]
# array of data
data = array(data)
print(data)
print(type(data))```

```[11 22 33 44 55]
<class 'numpy.ndarray'>```

### 二维列表转换为数组

```# two dimensional example
from numpy import array
# list of data
data = [[11, 22],
[33, 44],
[55, 66]]
# array of data
data = array(data)
print(data)
print(type(data))```

```[[11 22]
[33 44]
[55 66]]
<class 'numpy.ndarray'>```

## 2.数组索引

### 一维数组的索引

```# simple indexing
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
# index data
print(data[0])
print(data[4])```

```11
55```

```# simple indexing
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
# index data
print(data[5])```

`IndexError: index 5 is out of bounds for axis 0 with size 5`

```# simple indexing
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
# index data
print(data[-1])
print(data[-5])```

```55
11```

### 二维数组的索引

`data[0,0]`

`data[0][0]`

```# 2d indexing
from numpy import array
# define array
data = array([[11, 22], [33, 44], [55, 66]])
# index data
print(data[0,0])```

`11`

```# 2d indexing
from numpy import array
# define array
data = array([[11, 22], [33, 44], [55, 66]])
# index data
print(data[0,])```

`[11 22]`

## 3.数组切片

`data[from:to]`

### 一维切片

```# simple slicing
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print(data[:])```

`[11 22 33 44 55]`

```# simple slicing
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print(data[0:1])```

`[11]`

```# simple slicing
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print(data[-2:])```

`[44 55]`

### 二维切片

#### 拆分输入输出

`X = [:, :-1]`

`y = [:, -1]`

```# split input and output
from numpy import array
# define array
data = array([[11, 22, 33],
[44, 55, 66],
[77, 88, 99]])
# separate data
X, y = data[:, :-1], data[:, -1]
print(X)
print(y)```

```[[11 22]
[44 55]
[77 88]]
[33 66 99]```

#### 拆分训练行和测试行

```dataset
train = data[:split, :]```

`test = data[split:, :]`

```# split train and test
from numpy import array
# define array
data = array([[11, 22, 33],
[44, 55, 66],
[77, 88, 99]])
# separate data
split = 2
train,test = data[:split,:],data[split:,:]
print(train)
print(test)```

```[[11 22 33]
[44 55 66]]
[[77 88 99]]```

## 4.数列维数变形

### 数据形状

NumPy 数组有一个 shape 属性，它返回一个包含数组每个维度中数据数量的元组。

```# array shape
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print(data.shape)```

`(5,)`

```# array shape
from numpy import array
# list of data
data = [[11, 22],
[33, 44],
[55, 66]]
# array of data
data = array(data)
print(data.shape)```

`(3, 2)`

```# array shape
from numpy import array
# list of data
data = [[11, 22],
[33, 44],
[55, 66]]
# array of data
data = array(data)
print('Rows: %d' % data.shape[0])
print('Cols: %d' % data.shape[1])```

```Rows: 3
Cols: 2```

### 将一维数组转换为二维数组

NumPy 为 NumPy 数组对象提供 reshape（）函数，可用于调整维数。

reshape（）函数接受一个指定数组新形状的参数。在将一维数组重新整形为具有多行一列的二维数组的情况下，作为参数的元组，从 shape[0] 属性中获取行数，并将列数设定为1。

`data = data.reshape((data.shape[0], 1))`

```# reshape 1D array
from numpy import array
from numpy import reshape
# define array
data = array([11, 22, 33, 44, 55])
print(data.shape)
# reshape
data = data.reshape((data.shape[0], 1))
print(data.shape)```

```(5,)
(5, 1)```

### 将2维数组转化为3维数组

reshape( ) 函数可以直接使用，指定新的维度。以下是一个清楚的例子，其中每个序列拥有多个步长，每个步长对应其相应的观察结果。

`data.reshape((data.shape[0], data.shape[1], 1))`

```# reshape 2D array
from numpy import array
# list of data
data = [[11, 22],
[33, 44],
[55, 66]]
# array of data
data = array(data)
print(data.shape)
# reshape
data = data.reshape((data.shape[0], data.shape[1], 1))
print(data.shape)```

```(3, 2)
(3, 2, 1)```

## 概要

• 如何将您的列表数据转换为 NumPy 数组。
• 如何使用 Pythonic 索引和切片访问数据。
• 如何调整数组维数大小以满足某些机器学习 API 的输入要求。

0 条评论

• ### 在Python机器学习中如何索引、切片和重塑NumPy数组

在Python中，数据几乎被普遍表示为NumPy数组。

• ### 【NumPy学习指南】day4 多维数组的切片和索引

ndarray支持在多维数组上的切片操作。为了方便起见，我们可以用一个省略号（...）来

• ### 「最全」实至名归，NumPy 官方早有中文教程，结合深度学习，还有防脱发指南

在 Github 上一度蝉联最流行的机器学习和数据科学包 NumPy，已经有了非常之系统的中文文档，回想起当初细啃 NumPy 之时，不少人不得不徘徊于各大搜索...

• ### 机器学习的开始-Numpy初了解（如何创建Ndarray数组+numpy数据类型+切片+广播）

特点：验证码颜色的深浅度不一样，长度不一样（4-6位），区分大小写字母，字母数字混合，干扰线和噪点极多。这个需求只能通过深度学习来解决，在我的理解中，深...

• ### 手把手教你学Numpy教程，从此数据处理不再慌【三】——索引篇

上篇的末尾其实我们简单地提到了索引，但是没有过多深入。没有过多深入的原因也很简单，因为numpy当中关于索引的用法实在是很多，并不是我们想的那样用一个下标去获取...

• ### [翻译] NumSharp的数组切片功能 [:]

原文地址：https://medium.com/scisharp/slicing-in-numsharp-e56c46826630

• ### 学习Numpy，看这篇文章就够啦

导读：在数据分析当中，Python用到最多的第三方库就是Numpy。本文内容是「大数据DT」内容合伙人王皓阅读学习《Python 3智能数据分析快速入门》过后的...

• ### 技术图文：NumPy 的简单入门教程

这段时间，LSGO软件技术团队正在组织 “机器学习实战刻意练习”活动，这个活动是“Python基础刻意练习”活动的升级，是对学员们技术的更深层次的打磨。在用 P...

• ### 安利！这是我见过最好的NumPy图解教程

NumPy是Python中用于数据分析、机器学习、科学计算的重要软件包。它极大地简化了向量和矩阵的操作及处理。python的不少数据处理软件包依赖于NumPy作...

• ### 图解NumPy，这是理解数组最形象的一份教程了

NumPy 软件包是 Python 生态系统中数据分析、机器学习和科学计算的主力军。它极大地简化了向量和矩阵的操作处理。

• ### Numpy 修炼之道 （5）—— 索引和切片

Python 中原生的数组就支持使用方括号（[]）进行索引和切片操作，Numpy 自然不会放过这个强大的特性。

• ### NumPy 使用教程

如果你使用 Python 语言进行科学计算，那么一定会接触到 NumPy。NumPy 是支持 Python 语言的数值计算扩充库，其拥有强大的多维数组处理与矩阵...

• ### 图解NumPy，这是理解数组最形象的一份教程了

NumPy 软件包是 Python 生态系统中数据分析、机器学习和科学计算的主力军。它极大地简化了向量和矩阵的操作处理。Python 的一些主要软件包（如 sc...

• ### 图解NumPy，别告诉我你还看不懂！

NumPy 软件包是 Python 生态系统中数据分析、机器学习和科学计算的主力军。它极大地简化了向量和矩阵的操作处理。Python 的一些主要软件包（如 sc...

• ### 图解NumPy，这是理解数组最形象的一份教程了

NumPy 软件包是 Python 生态系统中数据分析、机器学习和科学计算的主力军。它极大地简化了向量和矩阵的操作处理。Python 的一些主要软件包（如 sc...

• ### 【图解 NumPy】最形象的教程

NumPy 软件包是 Python 生态系统中数据分析、机器学习和科学计算的主力军。它极大地简化了向量和矩阵的操作处理。Python 的一些主要软件包（如 sc...

• ### 一键获取新技能，玩转NumPy数据操作！

在本文中，将介绍NumPy的主要用法，以及它如何呈现不同类型的数据（表格，图像，文本等），这些经Numpy处理后的数据将成为机器学习模型的输入。

• ### 一键获取新技能，玩转NumPy数据操作

NumPy是Python中用于数据分析、机器学习、科学计算的重要软件包。它极大地简化了向量和矩阵的操作及处理。python的不少数据处理软件包依赖于NumPy作...

• ### 掌握NumPy，玩转数据操作

NumPy是Python中用于数据分析、机器学习、科学计算的重要软件包。它极大地简化了向量和矩阵的操作及处理。python的不少数据处理软件包依赖于NumPy作...