暑期实训python第六天课-------numpy

什么是numpy??

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

1、一个强大的N维数组对象 ndarray
2、广播功能函数
3、整合 C/C++/Fortran 代码的工具
4、线性代数、傅里叶变换、随机数生成等功能

第一步,安装numpy

使用的是 pip install numpy
直接在Terminal里输入就可以:
在这里插入图片描述

但是,软件自带的镜像下载的很慢很慢,只有十几kb,所以需要更改源文件为阿里源

pip config set global.trusted-host mirrors.aliyun.com

其他两个类似,就不举例了,注意不用加等号和 引号

numpy的使用

首先要先引入包

import numpy as np

1、创建 adarray

直接创建:

 a1 = np.array([1,2,3])
 a2 = np.array([[1,2,3],[4,5,6]])
 a3 = np.array([[[1, 2, 3], [4, 5, 6]],
                  [[7, 8, 9], [10, 11, 12]]])

经常使用的是产生随机数的方式创建ndarray

a4 = np.random.random((3, 3))
print(a4)
[[0.57535872 0.85528972 0.57819323]
 [0.40186922 0.69973411 0.92463808]
 [0.14921975 0.00433273 0.57461482]]

最常用的创建ndarray的方式

a = np.arange(24).reshape((2,3,4))

2、ndarry 常用属性,使用a.+属性 格式使用

shape :ndarray 的形状,(维度1的长度,维度2的长度,维度3的长度,。。)
size: ndarray 的元素的个数 维度1的长度维度2的长度维度3的长度
ndim:维度大小

指定ndarray 的大小,创建元素全部为 1 或者为 0

ones 和 zeros

print(np.ones((2, 4, 5)))
[[[1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1.]]
print(np.zeros((2, 4, 2)))
[[[0. 0.]
  [0. 0.]
  [0. 0.]
  [0. 0.]]

3、ndarray 切片

ndarray 的切片,只是原来的ndarray 的视图并不会创建新的ndarray

这两句代码很重要

print(a[:,1]) #取出第一个维度所有 , 第二个维度的第二个

print(a[:, 0:2, 0:2]) #(0:2) 指的是0,1,不包括2

4、垂直合并 和 水平合并

vertical:垂直
horizontal:水平

垂直合并arange,合并之后,维度和元素维度一致

a1 = np.arange(12).reshape(3,4)
a2 = np.arange(12).reshape(3,4)
print(np.vstack((a1, a2)))
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]

水平合并,合并之后,维度和元素维度一致
三行四列变成六行四列
print(np.hstack((a1, a2)))
[[ 0  1  2  3  0  1  2  3]
 [ 4  5  6  7  4  5  6  7]
 [ 8  9 10 11  8  9 10 11]]

5、水平切割和垂直切割

水平切割 “刀” 是 垂直切的:

a1 = np.arange(12).reshape(3,4)

[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

print(np.hsplit(a1, 4)) 拆分数组,第二个参数是一个整数,表示拆分之后子数组的个数,子数组按维度1平均拆分子数组
[array([[0],
       [4],
       [8]]), array([[1],
       [5],
       [9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]])]

垂直切割 “刀” 是 水平切的:

print(np.vsplit(a1, 3))
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]

算术运算-----广播

算术运算 (加减乘除,求模,幂运算)两个相同大小的ndarray 进行数学运算,对应位置上的元素进行数学运算

如果大小不一样,会对小的数组进行广播,把小的数组变为大的数组一样大

广播规则

如果大小不一样,会对小的数组进行广播,把小的数组变为大的数组一样大
1、先对比两个数组的维度的个数是否一致,不一致的话,把维度小的数组,在左边补1,把维度补成一样的

a1 = np.arange(48).reshape((8,1,6,1))
a2 = np.arange(35).reshape((7,1,5))

广播步骤:把a2 的 7,1,5 补齐为 1,7,1,5
2、 把两个数组中,长度为1的维度,复制为长度一样
如果长度不为1,并且维度不同,那么两个数组不能进行广播,也就不能进行数学运算

ndarray 统计运算

np.sum(a2) #对所有求和
np.sum(a2,axis=2) #对指定维度求和

矩阵乘法

a1 = np.arange(12).reshape(3,4)

a2 = np.arange(20).reshape(4,5)

a1@a2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你在狗叫什么、

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

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

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

打赏作者

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

抵扣说明:

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

余额充值