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()
等函数,我们可以轻松地在不同维度之间转换数据。这些工具在数据预处理、特征工程和模型训练中都发挥着重要作用。掌握这些基本操作,将帮助你更高效地处理数据科学和机器学习任务。
热门推荐
从盐田到文旅新宠:海南莺歌海盐场的华丽转身
莺歌海盐场:老盐新玩法,打卡网红地!
海南莺歌海盐场:从传统到现代的华丽转身
8首睡前歌单大推荐Pt.2,想睡之前可以听听歌,放松身心灵~
对儿童接种新冠疫苗有多重要?
60-70年代的日常原来是这样!那些年的烟火气让人心生怀念!
冯友兰:人生四境界的智慧
埃里克森:各个人生阶段的心理攻略
十大完结重生小说排行榜:涵盖多种类型的精彩人生重塑之旅!
《被冻住的女人》:女性实现自我觉醒的深刻剖析!
他成为十年来首位在Spotify上,播放量达到4亿次的韩国男性说唱歌手
中医特色技术—穴位注射
《登高》:读懂杜甫只须一瞬间。
一喝水就"频繁去厕所",这究竟是疾病,还是只是正常生理现象?
喝茶后频繁尿意:如何缓解及解决持续想上厕所的问题
全球植物园的古老根源
奇幻植物园:全球珍稀植物的秘密
LM2576与LM2596:引脚配置、特性及实际应用对比
中国当代最著名的十位作家
拒绝精神内耗,做自己生活的主人!
《动物庄园》里的权力与私欲
再读乔治·奥威尔的《1984》:为什么极权社会总是热衷于造神?
35岁突围!你不能错过的20本好书
五本高口碑青春校园都市小说,带你重回校园时光
六一书单:在小说中,获得成长的力量
五本高口碑青春校园都市小说,回到曾经的校园,怀念逝去的青春!
米德论战:先天VS后天,谁赢了?
康德哲学:先天后天大揭秘
蜂蜜+香蕉+火麻仁:真的能缓解便秘吗?
河南省中医院王丽推荐:便秘患者的饮食秘籍