Numpy 的矩阵操作

本文深入探讨了NumPy库中数组的切片、索引和布尔选取等操作,包括提取特定行、列,使用布尔数组进行条件筛选,以及类型转换。示例展示了如何设置数组值,以及如何通过索引获取和修改数据。此外,还讲解了如何利用`np.where()`和`np.argwhere()`函数查找特定值的索引位置。文章最后涉及了数组的类型转换,如将整数或浮点数数组转换为字符串类型,并展示了数组与纯量间的算术运算。
摘要由CSDN通过智能技术生成

import numpy as np
a = np.random.randint(10,size=(5,5))
a
array([[0, 8, 3, 0, 2],
[0, 6, 6, 6, 3],
[0, 3, 6, 8, 7],
[2, 6, 1, 4, 4],
[4, 1, 5, 6, 4]])

1. 数组切片

随机生成5x5的一个矩阵

提取矩阵第n列

a[:,3]
array([0, 6, 8, 4, 6])
提取矩阵第n行

a[3,:]
array([2, 6, 1, 4, 4])
提取矩阵第n行到第n+m行

a[1:4]
array([[0, 6, 6, 6, 3],
[0, 3, 6, 8, 7],
[2, 6, 1, 4, 4]])
提取矩阵第n行到第n+m列

a[:,1:4]
array([[8, 3, 0],
[6, 6, 6],
[3, 6, 8],
[6, 1, 4],
[1, 5, 6]])

使用布尔数组选取数据集中大于4的数字

a[a>4]
array([8, 6, 6, 6, 6, 8, 7, 6, 5, 6])
使用布尔数组选取数据集中第二列大于3的数字所在的行

a[a[:,1]>3]
array([[0, 8, 3, 0, 2],
[0, 6, 6, 6, 3],
[2, 6, 1, 4, 4]])
使用布尔数组选取数据集中第二列等于3的数字所在的行

a[a[:,1]==6]
array([[0, 6, 6, 6, 3],
[2, 6, 1, 4, 4]])
使用布尔数组设置值,把数组a中小于4的值都设置为0

a[a<4]=0
a
array([[0, 8, 0, 0, 0],
[0, 6, 6, 6, 0],
[0, 0, 6, 8, 7],
[0, 6, 0, 4, 4],
[4, 0, 5, 6, 4]])

使用一维布尔数组设置整行或列:把第一列中含有数字6的行,全部设置为7

a[a[:,1]==6]=7
a
array([[0, 8, 3, 0, 2],
[7, 7, 7, 7, 7],
[0, 3, 6, 8, 7],
[7, 7, 7, 7, 7],
[4, 1, 5, 6, 4]])

取特定顺序行的数组,通过传递一个列表或整形ndarray来指定想要的顺序

a[[1,3,4]]
array([[7, 7, 7, 7, 7],
[7, 7, 7, 7, 7],
[4, 1, 5, 6, 4]])

2.数组索引

返回array中数字6的索引值

np.where(a==6)
(array([1, 1, 1, 2, 3, 4]), array([1, 2, 3, 2, 1, 3]))
返回的是一个tuple,第一个代表的是按列查找的索引值,第二个代表的是按行查找的索引值

类似的

np.argwhere(a==6)
array([[1, 1],
[1, 2],
[1, 3],
[2, 2],
[3, 1],
[4, 3]])

返回的是一个array

3.类型转换

类型转换

a.astype(np.float)
array([[0., 8., 3., 0., 2.],
[0., 6., 6., 6., 3.],
[0., 3., 6., 8., 7.],
[2., 6., 1., 4., 4.],
[4., 1., 5., 6., 4.]])
a.astype(np.str)
array([[‘0’, ‘8’, ‘3’, ‘0’, ‘2’],
[‘0’, ‘6’, ‘6’, ‘6’, ‘3’],
[‘0’, ‘3’, ‘6’, ‘8’, ‘7’],
[‘2’, ‘6’, ‘1’, ‘4’, ‘4’],
[‘4’, ‘1’, ‘5’, ‘6’, ‘4’]], dtype=’<U21’)

数组和纯量之间的操作

a*a
array([[ 0, 64, 9, 0, 4],
[ 0, 36, 36, 36, 9],
[ 0, 9, 36, 64, 49],
[ 4, 36, 1, 16, 16],
[16, 1, 25, 36, 16]])
a-a
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])

纯量的算术操就是把操作值作用于每一个元素

a-3
array([[-3, 5, 0, -3, -1],
[-3, 3, 3, 3, 0],
[-3, 0, 3, 5, 4],
[-1, 3, -2, 1, 1],
[ 1, -2, 2, 3, 1]])
a*3
array([[ 0, 24, 9, 0, 6],
[ 0, 18, 18, 18, 9],
[ 0, 9, 18, 24, 21],
[ 6, 18, 3, 12, 12],
[12, 3, 15, 18, 12]])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值