Python学习:NumPy笔记

用NumPy可以干什么?
对一种数据类型为numpy.ndarray的数组进行数据操作(?存疑)
数组是什么?
可以类比为数列,一个数组只能由一种数据类型组成;数组里的每一个数据都称为这个数组的一个元素;一个数组里的元素可以是多个数组,这样的数组称为多维数组。
另外,关于二维数组:
好像在二维数组中,一个元素就是一行(?存疑)

NumPy数组索引方法(注意数组顺序是从0开始):
以下是教材上总结的描述:
一维数组索引(name为数组的名字):
name[1]#访问第1个元素
name[[0,1,3]]#访问第0,1,3个元素
name[0:3]#访问0,1,2个元素(不包括第三个)
二维数组索引:
name[1,2]和name[1][2]#访问第一行第二个元素
name[1,1:3]#访问第1行第1~2个元素
name[1]#访问第1行所有元素
name[:1]#访问第一列所有元素
name[1:3,1:4]#访问第1~2行,1~3列的所有元素
name[[0,1,2],[3,2,1]]#访问第0行第1个,第1行第2个,第2行第1个数据
name[[2,0]]#访问第2行和第0行的数据
name[:,[1,3]]#访问第1列和第3列的数据

但是,对于教材上二维数组的描述,因为二维数组中一个子数组就是一个元素,一个子数组就是一行(?存疑),所以可以把二维数组索引的文子描述进行一些改进,方便理解(个人感觉这样好理解,本质上无区别):

name[1,2]和name[1][2]#访问第一个子数组的第二个元素
name[1,1:3]#访问第1个子数组的第1~2个元素
name[1]#访问第1个子数组所有元素
name[:1]#访问所有子数组的第一个元素
name[1:3,1:4]#访问第1~2个子数组的第1~3个元素
name[[0,1,2],[3,2,1]]#访问第0个子数组的第1个,第1个数组的第2个,第2个子数组的第1个数据
name[[2,0]]#访问第2个子数组和第0个子数组的
name[:,[1,3]]#访问所有子数组的第1个和第3个的数据

另外,数组的布尔索引:看书本时感觉很好理解,但又不知道怎么写出来

NumPy数组的运算

1、数组与单个数据的运算:
就是数组里的每个元素都跟这个数据进行一次计算:

import numpy as np
... a=np.arange(4)
... print("a=",a)
... print(a+1)
a= [0 1 2 3]
[1 2 3 4]

2、数组与数组的运算:
①、数组形状相同时:
两个数组中,坐标相同的元素进行计算:

a= [0 1 2 3]
[5 6 7 8]
[ 5  7  9 11]
import numpy as np
... a=np.arange(4)
... print("a=",a)
... b=np.arange(5,9)
... print("b=",b)
... print(a+b)
... 
a= [0 1 2 3]
b= [5 6 7 8]
[ 5  7  9 11]

②、数组形状不同时:
按照广播规则进行计算
如何理解广播规则:
可以把数组抽象成一个个矩形,当两个矩形要做运算,但矩形的形状不能完全重合时,就把矩形缺失的地方用复制粘贴的方法补齐,使得两个矩形完全重合,得以进行计算,如下图所示:
在这里插入图片描述
但是要进行广播规则运算也是要满足其条件的:
只有当两个矩形不相同的两条边里的其中一条边的长度为1的时候,才会沿着这条边,把其他方向的值复制:

import numpy as np
... a=np.arange(8).reshape(2,4)
... print("a=",a)
... b=np.arange(16).reshape(4,4)
... print("b=",b)
... print(a+b)
Traceback (most recent call last
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值