Numpy学习之数组运算随笔

numpy的学习需要把初中、高中和大学的数学重新学一遍,才能学好
越学越觉得对不起各位数学老师。

import numpy as np
# 一元通用函数
arr = np.arange(10)
arr1 = np.random.randn(8)*7
print(np.sqrt(arr))                 #np.sqrt() 开平方
print(np.exp(arr))                  #np.exp() 求e^x e=2.71828182845904523536
print(np.abs(arr))                  #abs() 求绝对值 fabs()类似
print(np.square(arr))               #square() 计算每个数字的平方
print(np.log(arr))                  #log,log2,log10,log1p,计算对数
print(np.sign(arr))                 #sign() 计算每个数字的符号值,正数为1,负数为-1,0为0
print(np.ceil(arr))                 #ceil() 计算大于等于该数字的最小整数值
print(np.floor(arr))                #floor() 计算小于等于该数字的最小整数值
print(np.rint(arr1))                 #rint() 将元素保留到整数位
print(np.isnan(arr))                 #isnan() 判断数组中是否有NaN
print(np.isfinite(arr))              #isfinite()数组是否有限 isinf() 数组是否无限
print(np.sin(arr))                   #sin(),cos(),cosh(),sinh(),tan(),tanh()等 哎,都忘了

#二元通用函数
arr1 = np.random.randn(8)
arr2 = np.random.randn(8)
np.maximum(arr1,arr2)               #maximum() 求最大值,两个参数的ndarry的shape要完全相同
np.add(arr1,arr2)                   #add() 两个数组相加
np.subtract(arr1,arr2)              #subtract() 数组1-数组2
np.multiply(arr1,arr2)              #multiply() 乘法
np.divide(arr1,arr2)                #divide()除法
# 更多二元函数:
# np.minimum() np.fmin()  求最小值
# np.mod()   取余数
# np.copysign()  将第一个数组的符号值改为第二个数组的符号值
# np.greater(),np.greater_equal(),np.less() np.equal(),np.less_equal(),np.not_equal() 比较大小
# np.logical_and(),np.logical_or(),np.logical_not(),np.logical_xor() 与或非异或操作
#modf:返回一个浮点值数组的小数部分和整数部分
arr1 = np.random.randn(8)*7
remainder, whole_part = np.modf(arr1)        #remainder:余数,whole_part:整数

#第一张图
import matplotlib.pyplot as plt
points = np.arange(-5,5,0.01)
xs, ys = np.meshgrid(points,points)
z = np.sqrt(xs**2+ys**2)
plt.figure()
plt.imshow(z,cmap=plt.cm.gray)
plt.colorbar()
plt.title("Image plot of $\sqrt{x^2 + y^2}$ for a grid of values")
plt.show()

#将条件逻辑作为数组操作
arr = np.random.randn(4,4)
print(np.where(arr>0,2,arr))            #如果arr的值大于0,则改为2,否则改为-2

# 数学与统计方法
arr1 = np.random.randn(5,4)
print(arr1.mean())                 # mean() 求平均值
print(arr1.mean(axis=1))           # 计算每一列的平均值
print(arr1.mean(axis=0))           # 计算每一行的平均值
# 其他方法:
# std,var  标准差和方差
# min,max  最小值和最大值
# argmin,argmax 最大值和最小值的位置
# cumsum   从0开始元素累积和
# cumprod  从1开始元素累积积
arr2 = np.array([1,2,3,4,5,6,7])
print(arr2)
print(arr2.cumsum())
print(arr2.cumprod())
print(np.cumsum(range(101))[-1])   #求1-100的和

# 布尔数值组的方法:
arr = np.random.randn(100)
print((arr >0).sum())    #统计数组中正值的个数
bools = np.array([False,True,False,False])
print(bools.any())       #检查数组中是否有一个true
print(bools.all())       #检查数组中是否全部是true

# 排序
arr = np.random.randn(10)
arr.sort()                  #对数组中的值进行排序,由小到大
arr1 = np.random.randn(5,3)
arr1.sort(axis=1)     #沿着列的方向进行排序 如果=0,就是沿着行的方向进行排序

#集合操作
# unique(X)              计算X的唯一值,并排序
# intersect1d(x,y)       计算x和y的交集,并排序
# union1d(x,y)           计算x和y的并集,并排序
# in1d(x,y)              计算x中的元素是否包含在y中,返回一个布尔值数组
# setdiff1d(x,y)         差集,在x中但是不在y中的元素
# setxor1d(x,y)          异或集,在x或者y中,但不属于xy的交集的元素
ints = np.array([1,2,3,1,1,2,3,4,5,5,2])
print(np.unique(ints))

#随机漫步:
nsteps = 1000
draws = np.random.randint(0,2,size=nsteps)
steps = np.where(draws > 0, 1, -1)
walk = steps.cumsum()
print(steps.mean())
print(walk.min())
print(walk.max())

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值