Numpy_1

一、数组简介

初始化

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

索引

arr[1][2]
arr[1,2]
arr[1,-1] #第二行 最后一列 
arr[np.arrange(0,2),[0,1]] #取出a[0,1] a[1,1] 返回一个列表 可以用数组作为索引,返回多个值
arr[arr>2] 
#用布尔值返回
bool_index = arr>2 #右侧返回一个bool数组
arr[bool_index]

切片

左闭右开。

#一维子数组
arr_1 = [1,2,3,4,5,6]
arr_1[:3] #前三个元素
arr_1[3:] #从索引3开始
arr_1[::2] #步长为2
arr_1[::-1] #逆序
#二维子数组 可以对行或列整体赋值
arr[:1,:2] #一行两列
arr[::1,::2] #一行 一隔一列 
arr[::-1,::-1] #逆序
#获取数组的行和列
arr[:,0] #第一列
arr[0,:] #第一行
副本

在python列表中,切片是值的副本。在Numpy中,切片是值的视图(同时修改)。

arr.copy()

属性(3+1)

内置属性,不是方法,不加括号。

维度
arr.ndim #一维、二维、三维
arr.shape #每个维度的大小
元素总数量
arr.size
数据类型
arr.dtype
修改数据类型
arr.astype(np.float)

种子

设置一组种子值,确保每次程序执行时都可以生成同样的随机数组

np.random.seed(0)

创建(9种)

# dtype
a = np.zeros((2,3)) #全是0
a = np.ones((2,3)) #全是1
a = np.full((2,3),8) #全是8
a = np.random.random((2,3)) #随机数(0,1)之间
a = np.random.normal(0,1,(2,3)) #均值为0,标准差为1的正态分布
a = np.random.randint(0,10,(2,3)) #[0,10)之间的随机整数
a = np.empty((2,3)) #数据是计算机内存原来的数值,创建随机初始化数组
a = np.arrange(0,20,2) #起始,终止,步长 类似range 线性序列
a = np.eye(3) #单位矩阵

二、通用函数

什么是通用函数:该函数能对每一个值进行操作。

数组的运算

arr+2 np.add(arr,2)
arr-2 np.substract(arr,2)
arr/2 np.divide(arr,2)
arr*2 np.multiple(arr,2)
arr//2 np.floor_divide(arr,2)
arr**2 np.power(arr,2)
arr%2 np.mod(arr,2)

绝对值

np.abs(arr)

三角函数

np.sin/cos/tan/arcsin/arccos/arctan(arr)

指数和对数

指数
np.exp(arr) #e^x
np.exp2(arr) #2^x
np.power(3,x) #3^x
对数
np.log(arr) #ln(x)
np.log2(arr) #log2(x)

数组间的运算

arr_2 = np.arr[[7,8,9],[10,11,12]]
arr*arr_2 #内积 对应相乘 +-/同理 shape一致
arr.dot(arr_2.T) #矩阵乘法
np.dot(arr,arr_2.T)
np.matmul(arr,arr_2.T)
arr.T #矩阵转置

高级的通用函数特性

指定输出
y = np.empty((2,3))
np.multiple(arr,arr_2,out=y) #基本算符都可以

不同于y = arr + arr_2
out参数是直接写入,而前者是生成临时数组再复制到y中

聚合

直接在对象上进行运算。

np.add.reduce(arr) #返回所有元素的和
np.add.accumulate(arr) #返回所有元素的和的中间过程

三、聚合函数

什么是聚合函数:该函数能对一组值进行操作,输出一个值。
10个

np.sum(arr) #和
arr.sum()
np.prod(arr) #积
np.mean(arr) #平均值
np.std(arr) #标准值
np.var(arr) #方差
np.min(arr) #最小值
np.max(arr) #最大值
np.argmin(arr) #找出最小值的索引
np.argmax(arr) #找出最大值的索引
np.median(arr) #中位数

默认情况下,返回整个数组的结果。
axis=0 返回每一行的结果 一维数组形式
axis=1 返回每一列的结果

安全模式 在方法前加nan,忽略缺失值。

四、矩阵运算

广播

另一种向量化操作。
不同大小的数组的二元通用函数的一组规则。
在这里插入图片描述

规则

1.如果两个数的维度数不相同,那么小维度的数组的形状将会在最左边补1;
2.如果两个数组的形状在任何一个维度上都不匹配,那么数组的形状会沿着维度为1的维度扩展以匹配另外一个数组的形状;
3.如果两个数组的形状在任何一个维度上都不匹配并且没有任何一个维度等于1,那么会引发异常。

#示例 规则1 + 规则2
M = np.zeros((2,3))
a = np.arrange(3)
M+a #a先扩展为(1,3),接着扩展为(2,3)

变形

arr.reshape((3,2)) #顺序排列,依次取值
#在某一维度写上-1,numpy自动帮我们计算出正确的维度。

连接

np.concatenate([arr,arr_1],axis=0/1)
np.vstack(arr,arr_1) #垂直
np.hstack(arr,arr_1) #水平
np.r_[arr,arr_1] #按行堆叠
np.c_[arr,arr_1] #按列堆叠

贴瓷砖

np.tile([0,1],(2,3))
[[0,1,0,1,0,1]
[0,1,0,1,0,1]]

逆矩阵

np.linalg.inv()

维度变化

np.expend_dims() #升维
np.squeeze() #降维

五、布尔

运算符

运算符通用函数
==np.equal
!=np.not_equal
<np.less
<=np.less_equal
>np.greater
>=np.greater_equal

布尔操作

统计记录个数
#统计布尔数组中True记录的个数
np.count_nonzero(arr>2)
np.sum(arr>2) #False记为0,True记为1
#有没有值大于2?
np.any(arr>2)
#是不是所有值都大于2?
np.all(x>2)

以上都可用于特定的坐标轴。

布尔运算符
运算符通用函数
&np.bitwise_and
|np.bitwise_or
^np.bitwise_xor
~np.bitwise_not
#大于2,小于3的数量
np.sum((arr>2)&(arr<3))

六、numpy文件的输入输出

np.save('test',arr) #默认npy
arr = np.load('test.npy')
```
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

右边是我女神

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

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

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

打赏作者

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

抵扣说明:

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

余额充值