【数据分析之道-NumPy(六)】数组操作

本文介绍了Numpy库中用于修改数组形状的方法,如reshape、resize、flatten和ravel;翻转数组的transpose、flip、fliplr和flipud;修改数组维度的newaxis和squeeze;连接数组的concatenate、stack、hstack和vstack;以及分割和管理数组元素的split、hsplit、vsplit、array_split、append、insert和delete。这些函数是Python数据分析中的基础操作,对于处理和操作数据至关重要。

在这里插入图片描述

专栏导读

✍ 作者简介:i阿极,优快云 Python领域新星创作者,专注于分享python领域知识。

本文录入于《数据分析之道》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
订阅后,可以阅读《数据分析之道》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
✍ 其他专栏: 《机器学习案例》

1、修改数组形状

Numpy提供了一些函数来修改数组的形状,包括:

函数描述
reshape()改变数组的形状,但不改变原数组。
resize()改变数组的形状,同时也改变原数组。
flatten()将多维数组变为一维数组。
ravel()将多维数组变为一维数组,但是返回的是原数组的视图。

reshape()

import numpy as np
a = np.arange(1, 10).reshape(3, 3)
print(a)

在这里插入图片描述

resize()

b = np.arange(1, 10).reshape(3, 3)
b.resize(1, 9)
print(b)

在这里插入图片描述

flatten()

c = np.arange(1, 10).reshape(3, 3)
d = c.flatten()
print(c)
print(d)

在这里插入图片描述

ravel()

e = np.arange(1, 10).reshape(3, 3)
f = e.ravel()
print(e) 
print(f)

在这里插入图片描述

2、翻转数组

Numpy提供了一些函数来翻转数组,包括:

函数描述
transpose()转置数组,行变为列,列变为行。
flip()沿某个轴翻转数组。
fliplr()左右翻转数组。
flipud()上下翻转数组。

transpose()

a = np.arange(1, 10).reshape(3, 3)
b = np.transpose(a)
print(a)
print(b)

在这里插入图片描述

flip()

c = np.arange(1, 10).reshape(3, 3)
d = np.flip(c)
print(c)
print(d)

在这里插入图片描述

fliplr()

e = np.arange(1, 10).reshape(3, 3)
f = np.fliplr(e)
print(e)
print(f)

在这里插入图片描述

flipud()

g = np.arange(1, 10).reshape(3, 3)
h = np.flipud(g)
print(g)
print(h)

3、修改数组维度

Numpy提供了一些函数来修改数组的维度,包括:

函数描述
newaxis增加数组维度。
squeeze()去掉数组中的一维。

newaxis()

a = np.array([1, 2, 3])
b = a[np.newaxis, :]
print(a)
print(b)

在这里插入图片描述

squeeze()

c = np.arange(1, 10).reshape(1, 3, 3, 1)
d = np.squeeze(c)
print(c.shape)
print(d.shape)

在这里插入图片描述

4、连接数组

Numpy提供了一些函数来连接数组,包括:

concatenate()沿着指定的轴连接相同形状的两个或多个数组。
stack()沿着新的轴连接数组序列。
hstack()水平堆叠序列中的数组(列方向)。
vstack()水平堆叠序列中的数组(行方向)。

concatenate()

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
c = np.concatenate((a, b), axis=0)

print(c)

在这里插入图片描述

stack()

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.stack((a, b))

print(c)

在这里插入图片描述

hstack()、vstack()

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.hstack((a, b))
d = np.vstack((a, b))

print(c)
print(d)

在这里插入图片描述

5、分割数组

函数描述
split()将一个数组分割为多个子数组,分割方式可以指定为沿着垂直方向(纵向)或水平方向(横向),并指定分割点。
hsplit()将一个数组水平分割成多个子数组。
vsplit()将一个数组垂直分割成多个子数组。
array_split()将一个数组按照指定的轴进行分割成多个子数组,轴数可以自定义。

split()

arr = np.arange(12).reshape(2, 6)
sub_arr1 = np.split(arr, 3, axis=1)#按照第二个轴(即横向)将数组分割成三个子数组
sub_arr2 = np.split(arr, 2, axis=0)#按照第二个轴(即纵向)将数组分割成二个子数组
print(arr,'\n')
print(sub_arr1,'\n')
print(sub_arr2)

在这里插入图片描述

hsplit()

arr = np.arange(12).reshape(2, 6)
sub_arr_hsplit = np.hsplit(arr, 2)# 将数组水平分割成两个子数组
print(sub_arr_hsplit)

在这里插入图片描述

vsplit()

arr = np.arange(12).reshape(2, 6)
sub_arr_vsplit = np.vsplit(arr, 2)# 将数组垂直分割成两个子数组
print(sub_arr_vsplit)

在这里插入图片描述

array_split()

arr = np.arange(12).reshape(2, 6)
sub_array_split = np.array_split(arr, 4, axis=1)# 按照第二个轴(即横向)将数组分割成四个子数组
print(sub_array_split)

在这里插入图片描述

6、数组元素的添加和删除

函数描述
append()用于在数组末尾添加值
insert()用于在指定位置插入元素
delete()用于删除数组中的元素

append()

numpy.append(arr, values, axis=None)

参数说明:

  • arr:输入的数组
  • values:要添加的值,可以是一个值或一个数组
  • axis:沿着哪个轴添加值,默认为 None,即在数组的一维拼接添加值。
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.append(a, b)

print(c) 

在这里插入图片描述

insert()

numpy.insert(arr, obj, values, axis=None)

参数说明:

  • arr:输入的数组
  • obj:要插入的位置,可以是一个整数或一个数组,表示要插入的位置
  • values:要插入的值,可以是一个值或一个数组
  • axis:沿着哪个轴插入值,默认为 None,即在数组的一维插入值。
a = np.array([1, 2, 3])
b = np.insert(a, 1, [4, 5])

print(b) 

在这里插入图片描述

delete()

numpy.delete(arr, obj, axis=None)

参数说明:

  • arr:输入的数组
  • obj:要删除的元素的索引或者一个数组,表示要删除哪些元素
  • axis:沿着哪个轴删除值,默认为 None,即在数组的一维删除值。
a = np.array([1, 2, 3, 4, 5])
b = np.delete(a, 2)

print(b)  

在这里插入图片描述


📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发优快云博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

评论 19
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i阿极

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值