numpy-使用积累

0.任务需求

长期以来,使用numpy的机会比较多,但是因为个人原因,经常是间隔一段时间才会继续使用python 工具进行编程。
每一次使用前都会因为对于numpy工具的不熟悉,需要重新调试和学习使用numpy的方法。
本文的目的在于记录numpy 中自己经常使用,但是又可能频繁不确定,需要重新调试的函数和功能。
首先系统的使用和了解推荐numpy教程如下:
numpy使用教程

1.创建数组

a = np.zeros((3,2,2))
b = np.ones((2,4))

注意:一定要在括号里面再加一层括号,表示数组形状

2.数组求和

import numpy as np

a = np.reshape(np.array(range(27)), [3, 3, 3])
print("原来的a:{}".format(a))

print("沿着轴0求和:{}".format(np.sum(a, 0)))
print("沿着轴1求和:{}".format(np.sum(a, 1)))
print("沿着轴2求和:{}".format(np.sum(a, 2)))

输出:

原来的a:[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]]

[[ 9 10 11]
[12 13 14]
[15 16 17]]

[[18 19 20]
[21 22 23]
[24 25 26]]]
沿着轴0求和:[[27 30 33]
[36 39 42]
[45 48 51]]
沿着轴1求和:[[ 9 12 15]
[36 39 42]
[63 66 69]]
沿着轴2求和:[[ 3 12 21]
[30 39 48]
[57 66 75]]

感受:

1.轴0求和,像是沿着z轴

2.轴1求和,像是沿着x轴

3.轴2求和,像是沿着y轴

image-20220328144813207

3.数组索引

import numpy as np
a = np.array([1,23,3])
print('a:',a)
print(a[0:2])
a =  np.array([[1,2,3],[4,5,6]])
print('a:',a)
print(a[0:1,2:3])

输出:

a: [ 1 23 3]
[ 1 23]
a: [[1 2 3]
[4 5 6]]
[[3]]

4.数组排序

4.1 np.argsort

注意:这里的索引意思是指在对应的位置上 放上排序好的对应数字的索引。

import numpy as np

array = np.array([[7,1,2],[0,0,1],[1,1,3]])
print("Array before sorting\n",array)
index = np.argsort(array,axis=0)
print('沿着轴0排序',index)
index = np.argsort(array,axis=1)
print('沿着轴1排序',index)

输出:

Array before sorting
[[7 1 2]
[0 0 1]
[1 1 3]]
沿着轴0(列)排序 [[1 1 1]
[2 0 0]
[0 2 2]]
沿着轴1(行)排序 [[1 2 0]
[0 1 2]
[0 1 2]]

4.2 np.sort

import numpy as np

array = np.array([[7,1,2],[0,0,1],[1,1,3]])
print("Array before sorting\n",array)
index = np.sort(array,axis=0)
print('沿着轴0排序',index)
index = np.sort(array,axis=1)
print('沿着轴1排序',index)

输出:

沿着轴0排序 [[0 0 1]
[1 1 2]
[7 1 3]]
沿着轴1排序 [[1 2 7]
[0 0 1]
[1 1 3]]

5.数组添加

import numpy as np

a = [1, 2, 3]
b = [4, 5]
c = [[6, 7], [8, 9]]
d = [[10, 11], [12, 13]]
print('在一维数组a后添加values,结果如下:{}'.format(np.append(a, b, axis=0)))
print('沿二维数组c的行方向添加values结果如下:{}'.format(np.append(c, d, axis=0)))
print('沿二维数组c的列方向添加values结果如下:{}'.format(np.append(c, d, axis=1)))
# print('使用了axis,若arr和values的形状不同,则报错:'.format(np.append(a,c,axis=0)))

输出:

在一维数组a后添加values,结果如下:[1 2 3 4 5]
沿二维数组c的行方向添加values结果如下:[[ 6 7]
[ 8 9]
[10 11]
[12 13]]
沿二维数组c的列方向添加values结果如下:[[ 6 7 10 11]
[ 8 9 12 13]]

6.查找数据

import numpy as np

a = np.array([1, 2, 3, 4, 5])
print(np.where(a < 3))
print(type(np.where(a < 3)))
print(np.where(a < 3)[0])
print(type(np.where(a < 3)[0]))

x = np.arange(9.).reshape(3, 3)
print(x)
print(np.where(x > 5))

输出:

(array([0, 1], dtype=int64),)
<class ‘tuple’>
[0 1]
<class ‘numpy.ndarray’>
[[0. 1. 2.]
[3. 4. 5.]
[6. 7. 8.]]
(array([2, 2, 2], dtype=int64), array([0, 1, 2], dtype=int64))

总结:

  1. np.where()得到的是元组,数值表示满足查找条件的行索引和列索引。
  2. 利用这个性质,对于1维数组,获取满足条件的行索引,其实就是获取了数组的索引。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

儒雅的钓翁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值