Python中的Numpy数组常用操作

写在前面

  最近使用keras做一些东西,然后会经常用到Numpy来进行数组的操作。途中在网上查找了很多操作的相关方法,这里将一些我常用到的方法记录在这,用于遗忘后自己查阅(估计自己以后会经常使用python==),也用于大家查阅。

Numpy数组的创建

特殊矩阵的创建

  np.ones() 函数与np.zeros() 函数可以创建任意维度的全1或全0数组。函数参数可按照IDE的提示来进行填写。

创建自列表

  具体就是先创建具有数据的列表,然后将其转换为数组。如以下代码所示(我经常这样用==):

import numpy as np
a = [[1,2,3],[4,5,6]]
na = np.array(a)
print(na)
'''
输出为:
[[1 2 3]
 [4 5 6]]
'''

Numpy数组的切片

  由于python列表是层次嵌套的,所以索引元素方法为a[i][j];而Numpy数组为一个整体,其索引方法为a[i, j]。在此基础上就可以进行切片,比如:

  • a[i, 0:4]表示第i行,第0到第4列(不包括第4列);
  • a[i, :]表示第i行;
  • a[-1, :]表示最后一行;
  • a[:-1, :]表示除最后一行的所有行;
    以上方法同样可用于列。

Numpy数组的排序

将每一行或列排序

  使用np.sort() 函数或数组对象本身的sort() 函数,其中np.sort() 不改变原数组对象的顺序,而是返回一个排序后的数组对象。如下代码所示:

代码1 将每一行排序

import numpy as np
a = [[1,3,3],[4,2,6]]
na = np.array(a)
nb = np.sort(na, axis=-1)   #axis默认为-1,此时将每一行进行排序
print(na)                   #na数组并没有改变排序
print(nb)                   #nb数组为返回排序后的数组
'''
输出为:
[[1 3 3]
 [4 2 6]]
[[1 3 3]
 [2 4 6]]
'''

代码2 将每一列排序

import numpy as np
a = [[1,3,3],[4,2,6]]
na = np.array(a)
na.sort(axis=0)             #axis默认为0,此时将每一列进行排序
print(na)                   #na数组发生了改变
'''
输出为:
[[1 2 3]
 [4 3 6]]
'''

将每一行看作整体,将所有行按照某一列的顺序进行排序

  (这个功能我也经常使用==),这里要提一下argsort() 函数,该函数返回数组沿指定轴排序后的索引,我们可以使用某列排序后的索引来排序所有行。使用代码如下:

代码1 argsort()的用法

import numpy as np
a = [[1,3,3],[4,2,6]]
na = np.array(a)
b = na.argsort(axis=0)      #获取每一列排序后的索引
print(b)
'''
输出为:
[[0 1 0]
 [1 0 1]]
'''

代码2 将所有行按第二列进行排序

import numpy as np
a = [[1,3,3],[4,2,6]]
na = np.array(a)
b = na[na[:,1].argsort()]         #获取第二列排序后的索引,再用索引排序所有行
print(b)
'''
输出为:
[[4 2 6]
 [1 3 3]]
'''

Numpy数组的拼接

  np.concatenate() 函数可以提供数组拼接操作,使用代码如下:

import numpy as np
a = [[1,2],
     [3,4]]
b = [[5,6],
     [7,8]]
na = np.array(a)
nb = np.array(b)
result = np.concatenate((na,nb),axis=1)     #按列拼接,默认axis=0时按行拼接
print(result)
'''
输出为:
[[1 2 5 6]
 [3 4 7 8]]
'''

待续。。。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值