数值计算工具-Numpy-2

数值计算工具-Numpy

1.数组的修改(数组元素以及数组维度的修改)

#数组的修改(数组元素以及数组维度的修改)
import numpy as np
a=np.array([[1,2],[3,4],[5,6]])
print("\n",a)
a[1,1]=0  #修改第2行第2列元素为0
print("\n",a)
b=np.delete(a,2,axis=0)  #删除数组第3行
print("\n",b)
c=np.delete(a,0,axis=1)  #删除数组第1列
print("\n",c)
d=np.append(a,[[7,8]],axis=0)  #增加一行
print("\n",d)
e=np.append(a,[[9],[10],[11]],axis=1)  #增加一列
print("\n",e)

运行结果:

[[1 2]
[3 4]
[5 6]]

[[1 2]
[3 0]
[5 6]]

[[1 2]
[3 0]]

[[2]
[0]
[6]]

[[1 2]
[3 0]
[5 6]
[7 8]]

[[ 1 2 9]
[ 3 0 10]
[ 5 6 11]]

  1. reshape 和 resize变形
#reshape 和  resize变形
import numpy as np
a=np.arange(4).reshape(2,2)
b=np.arange(4).reshape(2,2)
print(a.reshape(4,),'\n',a)    #返回视图,a本身不变
print('\n')
print(b.resize(4,),'\n',b)   #没有返回,a改变了

运行结果:
[0 1 2 3]
[[0 1]
[2 3]]

None
[0 1 2 3]

3.数组降维

#数组降维
import numpy as  np
a=np.arange(4).reshape(2,2)
print(a.reshape(-1),'\n',a)  #返回视图,a本身不变
print(a.reshape(4),'\n',a)
b=np.arange(4).reshape(2,2)
print(b.ravel(),'\n',b)     #返回b的视图
c=np.arange(4).reshape(2,2)
print(c.flatten(),'\n',c)   #返回真实数组,需要分配内存空间

运行结果:
[0 1 2 3]
[[0 1]
[2 3]]
[0 1 2 3]
[[0 1]
[2 3]]
[0 1 2 3]
[[0 1]
[2 3]]
[0 1 2 3]
[[0 1]
[2 3]]

  1. 数组分割
#数组分割
import numpy as np
a=np.arange(6).reshape(2,3)  #构造两行三列的数组
b=np.hsplit(a,3)  #把a平均分成2个列数组
c=np.vsplit(a,2)  #把a平均分为2行数组
print(a,'\n','\n',b[1],'\n','\n',c[1],'\n')  #输出的也是三个列表


运行结果:
[[0 1 2]
[3 4 5]]

[[1]
[4]]

[[3 4 5]]

  1. 数组简单计算

#在NumPy库中,实现四则运算既可以使用运算符号+、-、*、/,
#也可以使用函数add、substract、multiply、divide。
#需要注意的是,函数只能接受两个对象的运算,如果需要多个对象的运算,就得使用嵌套方法。
#另外还有三个数学运算符,分别是余数、整除和幂次,可以使用符号%、//、**,也可以使用函数fmod、modf和power。
#但是整除的函数应用会稍微复杂一点,需要写成np.modf(a/b)[1]的格式,
#因为modf可以返回数值的小数部分和整数部分,而整数部分就是要取的整数值。

‘’’
参数个数情况: np.arange()函数分为一个参数,两个参数,三个参数三种情况
1)一个参数时,参数值为终点,起点取默认值0,步长取默认值1。
2)两个参数时,第一个参数为起点,第二个参数为终点-1,步长取默认值1。
3)三个参数时,第一个参数为起点,第二个参数为终点-1,第三个参数为步长。其中步长支持小数。
‘’’

#数组简单运算
import numpy as np
a=np.arange(10,15)
b=np.arange(5,10)
c=a+b
d=a*b
e1=np.modf(a/b)[0]  #小数部分
e2=np.modf(a/b)[1]  #整数部分

print(a,'\n',b,'\n',c,'\n',d,'\n',e1,'\n',e2,'\n')

运行结果:
[10 11 12 13 14]
[5 6 7 8 9]
[15 17 19 21 23]
[ 50 66 84 104 126]
[0. 0.83333333 0.71428571 0.625 0.55555556]
[2. 1. 1. 1. 1.]

6.比较计算

#数值计算
import numpy as np
a=np.array([[1,2,5],[10,13,16]])
b=np.array([[5,7,9],[3,9,0]])
print(a[a>b])  #取出a>b的所有元素
print(a[a>5])  #取出a>5的所有元素

print(np.where(a>5,-1,a))  #将a>5的元素改为-1
print(np.where(a>5,-1,0))  #将a>5的元素改为1,否则为0

运行结果:
[10 13 16]
[10 13 16]
[[ 1 2 5]
[-1 -1 -1]]
[[ 0 0 0]
[-1 -1 -1]]

7.广播机制

‘’’
广播(Broadcasting)是指不同形状的数组之间执行算术运算的方式。
当使用ufunc函数进行数组计算时,ufunc函数会对两个数组的对应元素进行计算。
进行这种计算的前提是两个数组的维度相容。
若两个数组的维度不相容时,则NumPy会实行广播机制。
但是数组的广播功能是有规则的,如果不满足这些规则,运算时就会出错。数组的主要广播规则为:
(1)各输入数组的维度可以不相等,但必须确保从右到左的对应维度值相等。
(2)如果对应维度值不相等,就必须保证其中一个为1。

‘’’

‘’’
reshape(行数,列数)常用来更改数据的行列数目
这里-1是指未设定行数,程序随机分配,所以这里-1表示任一正整数
所以reshape(-1,1)表示(任意行,1列)
‘’’

#广播机制实例
import numpy as np
a=np.arange(0,20,10).reshape(-1,1)  #变形为1列的数组,行数自动计算
b=np.arange(0,3)
print(a)
print(b)

print(a+b)

运行结果:
[[ 0]
[10]]
[0 1 2]
[[ 0 1 2]
[10 11 12]]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值