数据分析Numpy(2)-基础运算

#导入模块,重命名为np
import numpy as np


a = np.array([7,8,9,10],dtype = int) #列表转化为一行四列数组
b = np.arange(4) #生成[0,1,2,3]数组

#一维数组上的操作
c1 = a - b #对应的元素相减
c2 = a + b #对应的元素相加
c3 = a * b #对应的元素相乘
c4 = a / b #对应的元素相除
c5 = a** 2 #a中各个元素的平方
c6 = 2*np.sin(a) #10倍的sin(a)
print(b < 3) # array([ True,  True,  True, False], dtype=bool)
print(b == 3) # array([False,  False,  False, True], dtype=bool)

#真正的矩阵乘法
a1 = np.array([[0,1],[1,1]]) #列表转化为2行2列数组
b1 = np.arange(4).reshape(2,2) #生成[[0,1],[2,3]]
c7= np.dot(a,b) #a,b数组以行乘列的形式[[2,4],[2,3]]
c8 = a.dot(b) #作用等价于c7
c9 = a @ b #作用等价于dot()

#基本方法
a2 = np.random.random((2,4)) #生成2行4列0-1之间的数组
np.sum(a2)  #求和,a2.sum(axis=0)求每列的和
np.min(a2) #求最小,a2.min(axis=0)求每列的最小值
np.max(a2) #求最大,a2.max(axis=0)求每列的最大值
np.max(a2,axis = 0) #求最大,axis = 0是以列作为查找单元,axis = 1是以列作为查找单元
np.exp(a2) #以e为底的指数函数
np.sqrt(a2) #根号
#类似于+=或者*=这类的操作会直接更改原有数组,并且结果数组会向更加精确和一般的数组类型转变靠拢(向上转换)
a1*= 3 #a1永久更改
a2+=a1 #a2永久更改
a1+=a2 #输出a1会报错,因为结果数组元素是float型,但是结果元组是a1向int型靠拢,所以报错

a3 = np.arange(2,14).reshape((3,4)) #2-13形成3行4列的数组
np.argmax(a3) #求最大值的索引为0
np.argmin(a3) #求最小值的索引为11
np.average(a3) #求平均值
np.mean(a3) #同求平均值
np.median(a3) #求中位数
np.cumsum(a3) #从首项开始逐个累加生成数组,[2 5 9 14 20 27 35 44 54 65 77 90]
np.diff(a3) #从每一行尾项开始与前一个累减生成数组,所以是三行三列[[1,1,1],[1,1,1],[1,1,1]]
np.nonzero(a3) #分别以每个元素的行、列生成两个数组# (array([0,0,0,0,1,1,1,1,2,2,2,2]),array([0,1,2,3,0,1,2,3,0,1,2,3]))
np.sort(a3) #对每一行进行从小到大的排序
np.transpose(a3) #矩阵转置
print(a3.T) #也是专转置
print(np.clip(a3,5,9)) #a3中大于等于9的位置写9,5-9之间的位置写原值,小于等于5的位置写5
# array([[ 9, 9, 9, 9]
#        [ 9, 9, 8, 7]
#        [ 6, 5, 5, 5]])

其他常见函数:

all any apply_along_axis argmax argmin argsort average bincount ceil clip conj corrcoef cov cross cumprod cumsum diff dot floor inner INVlexsort max maximum mean median min minimum nonzero outer prod re round sort std sum trace transpose var vdot vectorize where

power()介绍:作用类似于a**b即a的b次方。注意在Numpy计算中要考虑数据溢出的问题,例如Numpy中的int与Python中的int有所不同,Numpy中int有严格的位数限制,如32位或者64位(64位仍然不够的时候会走动转化为浮点数),而Python中的int是灵活的,NumPy分别提供numpy.iinfonumpy.finfo验证NumPy整数和浮点值的最小值或最大值。

import numpy as np

np.iinfo(np.int) # Bounds of the default integer on this system.
  >>>iinfo(min=-9223372036854775808, max=9223372036854775807, dtype=int64)
np.iinfo(np.int32) # Bounds of a 32-bit integer
  >>>iinfo(min=-2147483648, max=2147483647, dtype=int32)
np.iinfo(np.int64) # Bounds of a 64-bit integer
  >>>iinfo(min=-9223372036854775808, max=9223372036854775807, dtype=int64)

print(np.power(2, 3)) #8

print(np.power([2,3,4], 3)) #分别求 2, 3, 4 的 3 次方[ 8 27 64]

print(np.power(2, [2,3,4])) #分别求 2的 2, 3, 4 次方[ 4 8 16]

print(np.power([2,3], [3,4])) #分别求 2 的 3 次方和 3 的 4 次方[ 8 81]

indices()的用法:返回的是一个行列的索引,然后可以用这个索引快速的创建二维数据。即利用数组的坐标快速生成新的数组。

import numpy as np

print( np.indices((3,3)))
#array([[[0, 0, 0], [1, 1, 1], [2, 2, 2]], [[0, 1, 2], [0, 1, 2], [0, 1, 2]]])


i, j = np.indices((2,3))
M = 2*i + 3*j
print(M)
'''
array([[0, 3, 6],
       [2, 5, 8]])
'''

#利用矩阵画圆
img = np.zeros((400,400))
ir,ic = np.indices(img.shape)
circle = (ir-135)**2+(ic-150)**2 < 30**2 # 半径30,圆心在135,150
img[circle]=1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值