轻松掌握Numpy日常用法,体验Numpy之快(二)

简介: 轻松掌握Numpy日常用法,体验Numpy之快(二)

轻松掌握Numpy日常用法,体验Numpy之快(一):https://developer.aliyun.com/article/1496328

6.数组形状:.T/.reshape()/.resize()

ar1 = np.arange(10)

ar2 = np.ones((5,2))

print(ar1,‘\n’,ar1.T)

print(ar2,‘\n’,ar2.T)

print(‘------’)

.T方法:转置,例如原shape为(3,4)/(2,3,4),转置结果为(4,3)/(4,3,2) → 所以一维数组转置后结果不变

ar3 = ar1.reshape(2,5) # 用法1:直接将已有数组改变形状

#将一维数组改成二维数组

ar4 = np.zeros((4,6)).reshape(3,8) # 用法2:生成数组后直接改变形状

总数一样就行,可以改变形状

元素总数不同,不能改变

ar5 = np.reshape(np.arange(12),(3,4)) # 用法3:参数内添加数组,目标形状


print(ar1,‘\n’,ar3)

print(ar4)

print(ar5)

print(‘------’)

numpy.reshape(a, newshape, order=‘C’):为数组提供新形状,而不更改其数据,所以元素数量需要一致!!

ar6 = np.resize(np.arange(5),(3,4))

print(ar6)

numpy.resize(a, new_shape):返回具有指定形状的新数组,如有必要可重复填充所需数量的元素。

注意了:.T/.reshape()/.resize()都是生成新的数组!!! 使用nump.resize

resize里面的参数,第一个是个数组,第二个是shape

原数组24个元素,新数组27个元素,新数组中元素不够用原数组中元素填充

多的元素也可以删除

如果resize直接作用于数组,将会改变数组本身,不返回新数组

7.数组的复制

ar1 = np.arange(10)

ar2 = ar1

print(ar2 is ar1)

ar1[2] = 9

print(ar1,ar2)

改其中一个数组的值,另一个也跟着变化,因为都是存在同一个内存地址

回忆python的赋值逻辑:指向内存中生成的一个值 → 这里ar1和ar2指向同一个值,所以ar1改变,ar2一起改变

ar3 = ar1.copy()

print(ar3 is ar1)

ar1[0] = 9

print(ar1,ar3)

修改ar1,ar3不变

copy方法生成数组及其数据的完整拷贝

再次提醒:.T/.reshape()/.resize()都是生成新的数组!!!

8.数组类型转换:数组.astype()

ar1 = np.arange(10,dtype=float)

print(ar1,ar1.dtype)

print(‘-----’)

可以在参数位置设置数组类型,返回新数组,原数组不变

ar2 = ar1.astype(np.int32) 这种方式被遗弃了,后续直接用数据类型 int即可 ar1.astype(int)

print(ar2,ar2.dtype)

print(ar1,ar1.dtype)

a.astype():转换数组类型

注意:养成好习惯,数组类型用np.int32,而不是直接int32 现在直接用int

9.数组堆叠

a = np.arange(5) # a为一维数组,5个元素

b = np.arange(5,9) # b为一维数组,4个元素

ar1 = np.hstack((a,b)) # 注意:((a,b)),这里形状可以不一样

print(a,a.shape)

print(b,b.shape)

print(ar1,ar1.shape)

a = np.array([[1],[2],[3]]) # a为二维数组,3行1列

b = np.array([[‘a’],[‘b’],[‘c’]]) # b为二维数组,3行1列

ar2 = np.hstack((a,b)) # 注意:((a,b)),这里形状必须一样

print(a,a.shape)

print(b,b.shape)

print(ar2,ar2.shape)

print(‘-----’)

numpy.hstack(tup):水平(按列顺序)堆叠数组

a = np.arange(5)

b = np.arange(5,10)

ar1 = np.vstack((a,b))

print(a,a.shape)

print(b,b.shape)

print(ar1,ar1.shape)

a = np.array([[1],[2],[3]])

b = np.array([[‘a’],[‘b’],[‘c’],[‘d’]])

ar2 = np.vstack((a,b))

print(a,a.shape)

print(b,b.shape)

print(ar2,ar2.shape)

print(‘-----’)

numpy.vstack(tup):垂直(按列顺序)堆叠数组 垂直堆叠要保证列的数量是一致的

a = np.arange(5)    
b = np.arange(5,10)
ar1 = np.stack((a,b))
ar2 = np.stack((a,b),axis = 1)
print(a,a.shape)
print(b,b.shape)
print(ar1,ar1.shape)
print(ar2,ar2.shape)
# numpy.stack(arrays, axis=0):沿着新轴连接数组的序列,形状必须一样!
# 重点解释axis参数的意思,假设两个数组[1 2 3]和[4 5 6],shape均为(3,0)
# axis=0:[[1 2 3] [4 5 6]],shape为(2,3)
# axis=1:[[1 4] [2 5] [3 6]],shape为(3,2)

10.数组拆分

ar = np.arange(16).reshape(4,4)

ar1 = np.hsplit(ar,2)

print(ar)

print(ar1,type(ar1))

numpy.hsplit(ary, indices_or_sections):将数组水平(逐列)拆分为多个子数组 → 按列拆分

输出结果为列表,列表中元素为数组

ar2 = np.vsplit(ar,4)

print(ar2,type(ar2))

numpy.vsplit(ary, indices_or_sections)::将数组垂直(行方向)拆分为多个子数组 → 按行拆

11.数组简单运算

ar = np.arange(6).reshape(2,3)

print(ar + 10) # 加法

print(ar * 2) # 乘法

print(1 / (ar+1)) # 除法

print(ar ** 0.5) # 幂

与标量的运算

print(ar.mean()) # 求平均值

print(ar.max()) # 求最大值

print(ar.min()) # 求最小值

print(ar.std()) # 求标准差

print(ar.var()) # 求方差

print(ar.sum(), np.sum(ar,axis = 0)) # 求和,np.sum() → axis为0,按列求和;axis为1,按行求和

print(np.sort(np.array([1,4,3,2,5,6]))) # 排序


相关文章
|
2天前
|
存储 机器学习/深度学习 并行计算
轻松掌握Numpy日常用法,体验Numpy之快(一)
轻松掌握Numpy日常用法,体验Numpy之快(一)
|
2天前
|
Python
numpy与pandas的基础学习例子
numpy与pandas的基础学习例子
28 0
|
6月前
|
Serverless 索引 Python
numpy入门(超级简单!)
numpy入门(超级简单!)
26 0
|
机器学习/深度学习 数据可视化 数据挖掘
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(中)
|
机器学习/深度学习 数据挖掘 索引
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(上)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(下)
Numpy用法详细总结:学习numpy如何使用,看这一篇文章就足够了(下)
|
Python
NumPy入门(六)
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 NumPy入门,后续还会单独发一篇 NumPy高级 内容供读者学习。
1816 0
NumPy入门(六)
|
Python Windows 索引
NumPy入门(一)
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 NumPy入门,后续还会单独发一篇 NumPy高级 内容供读者学习。
276 0
NumPy入门(一)
|
Python
NumPy入门(二)
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 NumPy入门,后续还会单独发一篇 NumPy高级 内容供读者学习。
84 0
NumPy入门(二)