numpy学习总结

1.将多维数组展成一维

两种方式,分别为:

a=np.array([[0,1,2,3],
		   	[4,5,6,7]])
#1
a.flatten() #out:array([0, 1, 2, 3, 4, 5, 6, 7])
#2
a.ravel() #out:array([0, 1, 2, 3, 4, 5, 6, 7])

两者的区别:

a.flatten()[0]=8
print(a) 
#out:([[0,1,2,3],
#     [4,5,6,7]])
a.ravel()[0]=8
print(a) 
#out:([[8,1,2,3],
#	  [4,5,6,7]])

总结:a.ravel()数组进行操作会改变原来a数组中的值,对flatten()生成的数组操作不会改变原数组。

2.数组的遍历

使用的是numpy.nditer()这个方法,具体函数说明请见官方函数说明。

#使用如下方式也可以迭代,这种直接迭代,i是每一行的元素集合
arr=np.arrange(10).reshape(2,5)
for i in arr:
	print(i)

进一步说明以后再改,先放一个其他人写的

3.数组排序/找最大的k个数

1.用于找到最大的k个数

numpy.argpartition(a, kth, axis=-1, kind='introselect', order=None)

在快排算法中,有一个典型的操作:partition。这个操作指:根据一个数值x,把数组中的元素划分成两半,使得index前面的元素都不大于x,index后面的元素都不小于x。numpy中的argpartition()函数就是起的这个作用。对于传入的数组a,先用O(n)复杂度求出第k大的数字,然后利用这个第k大的数字将数组a划分成两半。此函数不对原数组进行操作,它只返回分区之后的下标。一般numpy中以arg开头的函数都是返回下标而不改变原数组。此函数还有另外两个参数:
kind:用于指定partition的算法
order:表示排序的key,也就是按哪些字段进行排序
当我们只关心topK时,我们不需要使用np.sort()对数组进行全量排序,np.argpartition()已经够用了。
官方API介绍

4.数组乘和矩阵乘(点乘)

“*”在numpy中是数组乘
".dot()"是矩阵乘法,即行列相乘相加
下面举例说明:

  1. 数组乘
a = numpy.array([
				[1,2],
                [3,4]
                ])
b = numpy.array([
				[5,6],
                [7,8]
                ])
a*b
>>>array([[ 5, 12],
          [21, 32]])
  1. 矩阵乘
a = numpy.array([
				[1,2],
                [3,4]
                ])
b = numpy.array([
				[5,6],
                [7,8]
                ])
#下面两种方式都可以
a.dot(b)#1
numpy.dot(a,b)#2

>>>array([[19, 22],
          [43, 50]])

5. 多维数组按轴运算(如按行取均值)

c = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
print(c.mean(axis=1))#行
print(c.mean(axis=0))#列

>>>[ 2.5  5.5  8.5]
>>>[ 4.  5.  6.  7.]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值