问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Numpy高效工具助你轻松搞定一维数组变换

创作时间:
作者:
@小白创作中心

Numpy高效工具助你轻松搞定一维数组变换

引用
CSDN
7
来源
1.
https://blog.csdn.net/x_yan033/article/details/104964407
2.
https://blog.csdn.net/GUNNNNNNN/article/details/129997201
3.
https://blog.csdn.net/m0_37586991/article/details/79758168
4.
https://blog.csdn.net/cd_sywe/article/details/100713286
5.
https://www.h2kinfosys.com/blog/numpy-reshape-and-numpy-flatten-in-python/
6.
https://www.cnblogs.com/wodexk/p/10309431.html
7.
https://www.cnblogs.com/romin/p/10111239.html

在数据科学和机器学习领域,Numpy是Python中最重要、最强大的库之一。它提供了高性能的多维数组对象,以及用于处理这些数组的工具。在实际应用中,我们经常需要对数组进行维度变换,比如将一维数组转换为二维或三维数组,或者将多维数组压缩成一维。本文将详细介绍Numpy中用于维度变换的主要工具,并通过具体示例说明其使用方法。

01

Numpy维度变换的核心工具

reshape()

reshape()函数是Numpy中最常用的维度变换工具。它可以改变数组的形状,但不改变数据。使用reshape()时,需要确保新形状的元素总数与原数组相同。

import numpy as np

# 创建一个一维数组
array_01 = np.arange(24)
print('array_01:\n', array_01, '\narray shape:', array_01.shape)

# 将一维数组转换为三维数组
array_02 = array_01.reshape(3, 2, 4)
print('array_02:\n', array_02, '\narray shape:', array_02.shape)

输出结果:

array_01:
 [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] 
array shape: (24,)
array_02:
[[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]

 [[16 17 18 19]
  [20 21 22 23]]] 
array shape: (3, 2, 4)

ravel()

ravel()函数用于将多维数组转换为一维数组。它会按照数组的存储顺序(通常是行优先)展开数组。

# 将三维数组转换为一维数组
array_03 = array_02.ravel()
print('array_03:\n', array_03, '\narray shape:', array_03.shape)

输出结果:

array_03:
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] 
array shape: (24,)

flatten()

flatten()函数与ravel()类似,也会将多维数组转换为一维数组。但flatten()会返回一个新数组,而不会修改原始数组。

# 使用flatten()将三维数组转换为一维数组
array_04 = array_02.flatten()
print('array_04:\n', array_04, '\narray shape:', array_04.shape)

输出结果:

array_04:
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23] 
array shape: (24,)

transpose()

transpose()函数用于转换数组的坐标系。它需要多维数组作为输入,可以改变数组的轴顺序。

# 使用transpose()改变三维数组的轴顺序
array_05 = array_02.transpose(1, 2, 0)
print('array_05:\n', array_05, '\narray shape:', array_05.shape)

输出结果:

array_05:
[[[ 0  8 16]
  [ 1  9 17]
  [ 2 10 18]
  [ 3 11 19]]

 [[ 4 12 20]
  [ 5 13 21]
  [ 6 14 22]
  [ 7 15 23]]] 
array shape: (2, 4, 3)
02

Numpy数组创建工具

除了维度变换工具,Numpy还提供了多种创建数组的方法:

  • array():从Python列表或元组创建Numpy数组
  • zeros():创建内容全为0的数组
  • ones():创建内容全为1的数组
  • arange():创建有规律的数组
# 使用array()创建数组
a = np.array([1, 2, 3])
print(a)

# 使用zeros()创建全0数组
y = np.zeros((2, 3), dtype=int)
print(y)

# 使用ones()创建全1数组
y = np.ones((2, 3))
print(y)

# 使用arange()创建有规律的数组
x = np.arange(5)
print(x)

输出结果:

[1 2 3]
[[0 0 0]
 [0 0 0]]
[[1. 1. 1.]
 [1. 1. 1.]]
[0 1 2 3 4]
03

一维数组的切片和索引

Numpy还提供了强大的数组切片和索引功能,可以方便地选择和操作数组中的元素。

# 一维数组的切片
a = np.arange(10)
b = a[2:7:2]
print(a, b)

# 简单索引
x = np.array([[1, 2], [3, 4], [5, 6]])
y = x[[0, 1, 2], [0, 1, 0]]
print(x)
print(y)

# 布尔索引
x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
y = x[x > 5]
print(x)
print(y)

输出结果:

[0 1 2 3 4 5 6 7 8 9] [2 4 6]
[[1 2]
 [3 4]
 [5 6]]
[1 4 5]
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
[ 6  7  8  9 10 11]
04

总结

Numpy提供了丰富的工具来处理一维数组的维度变换。通过reshape()ravel()flatten()等函数,我们可以轻松地在不同维度之间转换数据。这些工具在数据预处理、特征工程和模型训练中都发挥着重要作用。掌握这些基本操作,将帮助你更高效地处理数据科学和机器学习任务。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号