Numpy基本使用

目录

1.初始numpy

#列表的缺点
a=[1,2,3]
# a+1 报错
b=[i+1 for i in a]
print(b) #[2, 3, 4]

#想要列表完成a+b的运算操作
a=[1,2,3]
b=[2,3,4]
c=[x+y for (x,y) in zip(a,b)]
print(c) #[3, 5, 7]

#引入numpy计算
import numpy as np

a=np.array([1,2,3,4])
print(a+1) #[2 3 4 5]

列表在进行运算操作时是过于繁琐的,而用过numpy可以使运算更加方便快捷

2.产生数组

import numpy as np

#1.从列表产生数组
list1=[0,1,2,3]
a=np.array(list1)
print(a) #[0 1 2 3]

#2.生成全0数组
a=np.zeros(5)
print(a) #[0. 0. 0. 0. 0.]

#3.生成全1数组
a=np.ones(5,dtype='int')
print(a) #[1 1 1 1 1]

#4.可以使用fill方法将数组设为指定值
a=np.array([1,2,3,4,5])
print(a) #[1 2 3 4 5]
a.fill(5)
print(a) #[5 5 5 5 5]

#5.与列表不同,数组中要求所有元素的dtype是一样的,
#如果传入参数的类型和数组的类型不一样,需要按照已有的类型进行转换
a=np.array([1,2,3,4,5])
a.fill(2.8)
print(a) #向下取整 [2 2 2 2 2]
b=a.astype('float')
b.fill(2.8)
print(b) #[2.8 2.8 2.8 2.8 2.8]

#6.生成整数序列 左闭右开
a=np.arange(1,10)
print(a) #[1 2 3 4 5 6 7 8 9]
a=np.arange(1,10,2)
print(a) #[1 3 5 7 9]

#7.生成等差数列 左闭右闭
a=np.linspace(1,10,21) #第三个参数代表元素的个数
print(a)
#[ 1.    1.45  1.9   2.35  2.8   3.25  3.7   4.15  4.6   #5.05  5.5   5.95
#  6.4   6.85  7.3   7.75  8.2   8.65  9.1   9.55 10.  ]

#8.生成随机数 返回一个0~1但不包括1的随机数
a=np.random.rand(10) #元素个数
print(a) 
#[0.40468317 0.51145897 0.91864091 0.02519811 0.3705643  #0.07932932
#0.23581236 0.91098156 0.41299108 0.88353082]
a=np.random.randint(1,10,20) #(begin,end,个数)
print(a)
#[9 2 6 4 5 1 9 7 2 3 6 8 5 7 6 2 4 5 7 7]

3.数组属性

import numpy as np

a=np.random.rand(10)

#1.查看类型
print(type(a)) #<class 'numpy.ndarray'>

#2.查看数组中的数据类型
print(a.dtype) #float64

#3.查看形状,会返回一个元组,每个元素代表这一维的元素数目
print(a.shape) #(10,)

#4.查看数组里面元素的数目
print(a.size) #10

#5.查看数组的维度
print(a.ndim) #1

a.shape返回的是(10,)表示的是一个一维数组,这个一维数组有10个元素;二维数组返回的是(num1,num2)表示的是几行几列

4.索引与切片

import numpy as np

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

#1.索引第一个元素
print(a[0]) #1

#2.修改第一个元素的值
a[0]=10
print(a) #[10  2  3  4  5  6]
a[0]=1

#切片 支持负索引
print(a[1:3]) #[2 3]
print(a[1:-2]) #[2 3 4]

5.实战演示

#问:一部电影的累计票房是21000,21800,22240,23450,25000
#求:每日电影票房

#解析:后一天的票房减去前一天的票房就是当日票房

import numpy as np

ob=np.array([21000,21800,22240,23450,25000])
ob2=ob[1:]-ob[:-1]
print(ob2) #[ 800  440 1210 1550]

6.多维数组及其属性

import numpy as np

#1.生成多维数组
a=np.array([[0,1,2,3],[10,11,12,13]]) #传入的是一个以列表为元素的列表
print(a) 
#[[ 0  1  2  3]
# [10 11 12 13]]

#2.查看形状
print(a.shape) 
# (2, 4)代表两行四列

#3.查看总的元素个数
print(a.size) #8

#4.查看维度
print(a.ndim) #2

7.多维数组索引

import numpy as np

a=np.array([[0,1,2,3],[10,11,12,13]])

#1.a[行索引,列索引]
print(a[1,3]) #13

#2.单个索引来索引一整行内容
print(a[1]) #[10 11 12 13]

#3.
print(a[:,1]) #[ 1 11]

8.多维数组切片

import numpy as np

a=np.array([[0,1,2,3,4,5],[10,11,12,13,14,15],
            [20,21,22,23,24,25],[30,31,32,33,34,35],
            [40,41,42,43,44,45],[50,51,52,53,54,55]])

#每一维都支持切片的规则,包括负索引,省略:[lower:upper:step]

#1.得到第一行的第4和第5两个元素
print(a[0,3:5]) #[3 4]

#2.得到最后两行的最后两列
print(a[4:,4:]) 
#[[44 45]
# [54 55]]

#3.得到第三列
print(a[:,2]) #[ 2 12 22 32 42 52]

#4.取出第3行和第5行的奇数列(第1列,第3列,第5列)
print(a[2::2,::2])
#[[20 22 24]
# [40 42 44]]

9.切片实质

import numpy as np

'''
切片是引用
切片在内存中使用的是引用机制
'''

#1.
a=np.array([0,1,2,3,4])
b=a[2:4]
# print(b) #[2 3]
b[0]=10
# print(a) #原来的2变为了10

'''
① 引用机制意味着python并没有为b分配新的空间来存储它的值,而是让b
指向了a所分配的内存空间。因此改变b会改变a的值
② 列表当中是不会出现这种现象的
'''

#2.copy()
a=np.array([0,1,2,3,4])
b=a.copy()
b[0]=10
print(a) #[0 1 2 3 4]
print(b) #[10  1  2  3  4]

10.一维花式索引

11.二维花式索引

12.不完全索引

13.where语句

14.数据类型转换

15.实战演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值