numpy常见用法

NumPy基础教程
部署运行你感兴趣的模型镜像

目录

一、numpy数组的创建

1.1 手动创建

1.2 调用numpy函数创建

1.3 创建连续数组

二、numpy数据类型以及本身操作

2.1 numpy的数据类型及转换

2.2 numpy数组的shape即转换

三、取numpy数组中的值

3.1 切片索引

3.2 布尔索引

3.3 花式索引

四、numpy数组的计算

4.1 numpy数组本身的计算

4.2 与其他numpy数组的计算

五、numpy数据的保存与加载

参考文献


 

numpy的基本对象为ndarray,即n-dimensional array object,它是存储单一数据类型的多维数组

一、numpy数组的创建

1.1 手动创建

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

b = np.array(list((1,2,3,4,5,6,7,8,9)))

1.2 调用numpy函数创建

# 创建2行3列的全一矩阵
c = np.ones((2,3))

# 创建2行3列的全0矩阵
d = np.zeros((2,3))

# 创建4行4列的单位矩阵
e = np.eye(4)

                                                            

还有产生随机数的一系列方法都在np.random里面

                                   

1.3 创建连续数组

# 类似于list,起始位置为1,结束位置为10,步长为2
f = np.arange(1,10,2)

# 起始位置为1,结束位置为10,创建20个数据,数据是等差数列
g = np.linspace(1,10,20)

# 起始位置为1,结束位置为10,创建20个数据,数据为等比数列、
h = np.logspace(1,10,20)

                           

二、numpy数据类型以及本身操作

2.1 numpy的数据类型及转换

numpy数组创建的时候,可以通过dtype制定数据类型,numpy常见的数据类型如下:

                                                            

# 创建数组的时候制定数据类型为int32
a = np.eye(5,dtype=np.int32)

# 查看数据类型,结果为dtype('int32')
a.dtype

# 转化数据类型,转化成np.float32
a.astype(np.float32)

2.2 numpy数组的shape即转换

# 创建大小为(4,4)的数组
a = np.eye(4,dtype=np.int32)

# 显示a的shape,为(4,4)
a.shape

# 将a数组转化成(2,8)列的数组
a.reshape((2,8))

输出结果为:

       

三、取numpy数组中的值

3.1 切片索引

切片索引是源数据的视图,对切片进行修改,也会影响到源数据

a = np.arange(10)

a_slice = a[3:9]

#a_slice输出结果为array([3, 4, 5, 6, 7, 8])

# 将索引的0个元素赋值为12345,则a的相应的值也会发生改变
a_slice[0] = 12345

# 输出a的值为
array([    0,     1,     2, 12345,     4,     5,     6,     7,     8,     9])

更为复杂的切片索引

arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# arr2d为
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

# 取前两行,后两列的数据
arr2d[:2,1:]

# 取第二列的数据
arr2d[:,1]

3.2 布尔索引

通过布尔值来取相应的数据

# names为7个人名,分别对应data1的7行
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)


# data数据如下
array([[ 0.41913264, -0.60298782, -0.33671674,  0.90943554],
       [-0.80005614,  0.0440845 , -0.39836774,  0.70296011],
       [-0.71155559, -1.55516028,  0.94330681, -1.16287966],
       [ 0.71886886, -0.44805654,  0.20305883, -1.40290861],
       [-0.55253099,  0.40979184,  0.38371407,  0.32289946],
       [ 1.84004387,  0.35889294,  0.20075337, -1.07528119],
       [ 0.35663761, -0.80927168, -1.57235542, -1.26338198]])

# 取Bob所对应的行
data[names == 'Bob']

结果:
array([[ 0.41913264, -0.60298782, -0.33671674,  0.90943554],
       [ 0.71886886, -0.44805654,  0.20305883, -1.40290861]])

3.3 花式索引

利用整数数组来进行取值,想取那行就把那行的索引放在数组里

arr = np.ones((8, 4))
for i in range(8):
    arr[i] = i 

# arr数据
array([[0., 0., 0., 0.],
       [1., 1., 1., 1.],
       [2., 2., 2., 2.],
       [3., 3., 3., 3.],
       [4., 4., 4., 4.],
       [5., 5., 5., 5.],
       [6., 6., 6., 6.],
       [7., 7., 7., 7.]])


# 现在想取1,3,5,7行
arr[[1,3,5,7]]

结果:
array([[1., 1., 1., 1.],
       [3., 3., 3., 3.],
       [5., 5., 5., 5.],
       [7., 7., 7., 7.]])

四、numpy数组的计算

4.1 numpy数组本身的计算

# 通过numpy数组对进行一些统计计算,如:numpy数组求和,求平均等等

# 生成3行2列的随机数组
arr = np.random.randn(3,2)

array([[-0.17504348,  1.07181866],
       [ 0.98881592, -0.18443573],
       [ 0.07177932, -1.13940987]])

# 对arr数组求均值
arr.mean()
结果:
0.10558747189372959

# 对arr数组求和
arr.sum()
结果:
0.6335248313623776

# 对arr数组列求和
arr.sum(axis=0)
结果:
array([ 0.88555177, -0.25202694])

# 对arr数组行求和
arr.sum(axis=1)
结果:
array([ 0.89677519,  0.80438019, -1.06763054])
# 对numpy数组进行一些数学运算,例如求指数,求平方
# 这些在numpy里叫ufunc即 universal function,对数组内每个元素进行操作的函数

arr = np.random.randn(6)

# 对arr求绝对值
np.abs(arr)

结果:
array([1.02469848, 0.84606635, 0.43296449, 0.86053481, 0.10749375, 1.49358338])


# 对arr求cos
np.cos(arr)

结果:
array([0.51935658, 0.6629333 , 0.90772595, 0.65203207, 0.99422811, 0.07713625])

4.2 与其他numpy数组的计算

# numpy与其他数组的计算,主要包括加、减、乘、除,求逆等等

# 常用的操作为矩阵相乘
a = np.array([[1,2],[3,4]])
b = np.array([[1,1],[2,2]])

a                               
array([[1, 2],                  
       [3, 4]])

b
array([[1, 1],
       [2, 2]])

# 矩阵相乘为np.dot(),py3.5以后也可以用@
np.dot(a,b) 或者 a@b
结果都一样,如下:
array([[ 5,  5],
       [11, 11]])


# 矩阵对应元素与元素相乘
np.multiply(a,b)

结果:
array([[1, 2],
       [6, 8]])

五、numpy数据的保存与加载

# numpy数据的保存
arr = np.arange(10)
np.save('test',arr)

# numpy数据的加载
b = np.load('test.npy')

参考文献

简书:<利用python进行数据分析-第二版>

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值