jupyter numpy

numpy 和python列表区别
1.内存结构
在这里插入图片描述
2.ndarray支持并行化运算(向量化运算)
3.Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,所以,其效率远高于纯Python代码。

ndarray (n维数组)

思考:如果拿到一个文件,该文件大小远超你电脑的内存大小的情况下,要怎么取出数据并使用?

1.看下是否存在不必要的内容,如果有,可以去掉不必要的内容;
2.如果去掉不必要的内容或者都是必要内容,可以看下里面的数据类型,尽可能的使用内存占用小的数据类型去存数据;
3.如果还是不能解决,可以尝试循环读取,一次只取部分,不过这时候就要考虑每次取出合适大小的内容

ndarray的属性

在这里插入图片描述
示例:

import numpy as np
a=np.array([[[2,3,4],[3,4,5]],[[2,3,4],[3,4,5]]])
a.shape #数组维度的元组
a.ndim #数组的维数,可以直接看中括号的层数
a.size  #数组中的元素数量
a.itemsize  #一个数组元素的长度(字节)
a.dtype #数据元素的类型

在这里插入图片描述

数组类型

在这里插入图片描述

指定数组类型

在这里插入图片描述

生成0和1的数组

#生成全1的数组
np.ones(shape, dtype)
np.ones_like(a, dtype)
#生成全0的数组
np.zeros(shape, dtype)
np.zeros_like(a, dtype)

在这里插入图片描述

关于array和asarray的不同

在这里插入图片描述

生成固定范围的数组

np.linspace (start, stop, num, endpoint)

创建等差数组 — 指定数量
参数:
start:序列的起始值
stop:序列的终止值
num:要生成的等间隔样例数量,默认为50
endpoint:序列中是否包含stop值,默认为ture

在这里插入图片描述

创建等差数组

np.arange(start,stop, step, dtype)
#step:步长,默认值为1

在这里插入图片描述

创建等比数列

np.logspace(start,stop, num)
start:如果start是0,那就是10^0,起始值就是1
end:如果start是2,那就是10^2,结束值值就是100
#num:要生成的等比数列数量,默认为50

在这里插入图片描述

直方图

plt.hist(数据,划分范围)
#直方图显示的是数据在范围内出现的次数

在这里插入图片描述

正态分布

np.random.normal(loc=0.0, scale=1.0, size=None)
loc:均值 scale:方差
如果想要数据分布集中,那么scale越小越好,标准正态分布中,loc为0,scale为1

在这里插入图片描述
在这里插入图片描述

形状改变

在这里插入图片描述

类型改变

在这里插入图片描述
在这里插入图片描述

去重/降成1维

在这里插入图片描述

逻辑运算

在这里插入图片描述

import numpy as np
score = np.random.randint(40,100,(10,5))  #在40-100之间,随机生成10名学生的五门成绩
test_score=score[6:,0:5] #后四名学生的五门成绩
#score[score>60]=1  #讲成绩大于60的设为1

在这里插入图片描述

np.all(score[:2, :]>60)  # 判断前两名同学的成绩[0:2, :]是否全及格
np.any(score[:2,:]>90)   #判断前两名同学中是否有成绩大于90的
c=score[:4,:]
np.where(c>60,1,0)   #将成绩大于60的设为1,其他设为0
np.where(np.logical_and(c>60,c<90),1,0)  #将前四名成绩在(60,90)之间的设为1,其他设为0
np.where(np.logical_or(c>90,c<60),1,0)  #将前四名成绩中小于60或者大于90的设为1,其他设为0

在这里插入图片描述

np.max(score)  #最大成绩
np.min(score)  #最小成绩
np.median(score) #中位数
np.mean(score)  #平均分
np.std(score)  #波动情况,标准差
np.var(score) #方差
np.argmax(score)  #最大元素对应的下标
np.argmax(score,axis=0)  #各科最大成绩对应的下标

在这里插入图片描述

arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr+1
arr/2

在这里插入图片描述

import numpy as np
#数组维度相等
arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1], [3]])
arr1+arr2
#某一数组的某一维度为1
arr1 = np.array([[0],[1],[2],[3]])
arr2 = np.array([1,2,3])
arr1+arr2

在这里插入图片描述

概括:
广播机制实现了时两个或两个以上数组的运算,即使这些数组的shape不是完全相同的,只需要满足如下任意一个条件即可。

1.数组的某一维度等长。
2.其中一个数组的某一维度为1 。

矩阵

1.矩阵必须是2维的;
2.矩阵的加法:行列数相等的可以加
3.矩阵乘法遵循准则:
(M行, N列)*(N行, L列) = (M行, L列)
4.矩阵乘法不满足交换律但是满足结合律
5.矩阵的逆(可逆矩阵一定是方阵):AA-1 = A-1A = I(其中I是单位矩阵)
6.单位矩阵:对角线都是1的矩阵,其他位置都为0
7.在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别

矩阵乘积示例:

a = np.array([[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]])
b=np.array([[0.7],[0.3]])
np.matmul(a,b)  #矩阵乘法,np.matmul中禁止矩阵与标量的乘法[用通俗的说法,标量是只有大小,没有方向的量。
(以此相对,矢量既有大小,又有方向。)]
#或者
#np.dot(a,b)

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值