numpy使用小技巧

numpy是python中进行矩阵运算的库,提供了很多高性能的计算、处理方法。
numpy中有大量的方法,在此记录一些自己用过的方法,不定期更新。

# 首先需要导入numpy模块
import numpy as np

# 定义数组
a = np.array([1,2,3])  #一维数组
a = np.array([[1,2,3],[1,2,3]])  #二维数组
print a.shape  #调用shape函数会返回数组的形状,结构为list,(行,列,...)

# 形状变化
a = np.reshape(a, (3,1))

# 其他创建数组的方法:
a = np.zeros((2,2))
a = np.ones((2,2))
a = np.full((2,2),6)
a = np.eye(2)
a = np.random.random((2,2))

# numpy数组有和matlab矩阵类似的切片方法

# 数据类型
x = np.array([[1,2],[1,4]], dtype=np.float64) #还有很多类型:int int64...
print x.dtype

# 数组计算
x = np.array([[1,2],[3,4]])
y = np.array([[8,9],[10,10]])
x + y  
np.add(x,y) #数组对应位置相加
x - y
np.subtract(x,y) #数组对应位置相减
x * y
np.multiply(x,y) #数组对应位置相乘
x / y
np.divide(x,y) #数组对应位置相除
np.sqrt(x) #数组每个位置开根号
x.dot(y)
np.dot(x,y) #矩阵乘法

np.sum(x) #x中所有元素求和
np.sum(x, axis = 0) #x中每一列求和
np.sum(x, axis = 1) #x中每一行求和
#以上sum使用后都返回一个行向量

x.T #矩阵转置

# 广播
'''
对两个数组使用广播机制要遵守下列规则:
    如果数组的秩不同,使用1来将秩较小的数组进行扩展,直到两个数组的尺寸的长度都一样。
    如果两个数组在某个维度上的长度是一样的,或者其中一个数组在该维度上长度为1,那么我们就说这两个数组在该维度上是相容的。
    如果两个数组在所有维度上都是相容的,他们就能使用广播。
    如果两个输入数组的尺寸不同,那么注意其中较大的那个尺寸。因为广播之后,两个数组的尺寸将和那个较大的尺寸一样。
    在任何一个维度上,如果一个数组的长度为1,另一个数组长度大于1,那么在该维度上,就好像是对第一个数组进行了复制。
'''

# 排序
# sort函数:从小到大排序
>>>a = np.array([[1,4],[3,1]])
>>>np.sort(a) #sort along the last axis
array([[1,4],
       [1,3]])
>>>np.sort(a, axis=None) #sort the flattened array
array([1,1,3,4])
>>>np.sort(a, axis = 0) #sort along the first axis
array([[1,1],
       [3,4]])
# argsort函数:返回从小到大排序的索引
k = np.argsort(a) #返回从小到大排序的索引
k = np.argsort(-a) #返回从大到小排序的索引

# 寻找共同项 unique函数
array = np.array([1, 2, 6, 4, 2, 3, 3])
u,indices,times = np.unique(array,return_index=True,return_counts=True)
#u为array中的不同项从小到大排序  indices为u中项在array的位置  times为u中每一项出现的次数

# 分开array  array_split函数
arr = np.array_split(array, n) #将array分为n份
# 组合array  np.vstack np.append np.concatenate 函数,功能不同,视具体情况使用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值