这是我参与11月更文挑战的第26天,活动详情查看:2021最后一次更文挑战
Numpy数组的排序:
In [2]: import numpy as np
In [3]: data = np.array([[4, 1], [2, 3]])
# 按0轴进行升序排序
In [6]: np.sort(data, axis=0)
Out[6]:
array([[2, 1],
[4, 3]])
# np.sort()返回的是副本,不会对原数组进行修改
In [7]: data
Out[7]:
array([[4, 1],
[2, 3]])
In [11]: data = np.array([[4, 6], [8, 2]])
In [12]: data
Out[12]:
array([[4, 6],
[8, 2]])
# 默认按最后一轴进行排序
In [13]: np.sort(data)
Out[13]:
array([[4, 6],
[2, 8]])
In [14]: np.sort(data, axis=0)
Out[14]:
array([[4, 2],
[8, 6]])
In [15]: data
Out[15]:
array([[4, 6],
[8, 2]])
# 不区分轴进行排序,会展开为一维数组,然后升序排序
In [16]: np.sort(data, axis=None)
Out[16]: array([2, 4, 6, 8])
In [17]: data
Out[17]:
array([[4, 6],
[8, 2]])
# ndarray.sort()方法会就地修改原数组
In [19]: data.sort(axis=0)
In [20]: data
Out[20]:
array([[4, 2],
[8, 6]])
Numpy数组搜索方法:
In [22]: data = np.arange(9).reshape(3,3)
In [23]: data
Out[23]:
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
# 返回数组中最大值所在的索引号
In [24]: np.argmax(data)
Out[24]: 8
In [25]: np.argmax(data, axis=0)
Out[25]: array([2, 2, 2])
In [26]: np.argmax(data, axis=1)
Out[26]: array([2, 2, 2])
Numpy获取不是0的数据的方法:
In [34]: data = np.array([[0, 3, 0], [2, 0, 4], [0, 0, 5]])
In [35]: data
Out[35]:
array([[0, 3, 0],
[2, 0, 4],
[0, 0, 5]])
In [36]: np.nonzero(data)
Out[36]: (array([0, 1, 1, 2]), array([1, 0, 2, 2]))
In [37]: data[data > 0]
Out[37]: array([3, 2, 4, 5])
In [38]: (data > 0).nonzero()
Out[38]: (array([0, 1, 1, 2]), array([1, 0, 2, 2]))
Numpy条件搜索并执行数据修改操作:
In [43]: data
Out[43]:
array([[0, 3, 0],
[2, 0, 4],
[0, 0, 5]])
# 如果元素!=0,那么元素不变,否则元素加99
In [44]: np.where(data!=0, data, 99+data)
Out[44]:
array([[99, 3, 99],
[ 2, 99, 4],
[99, 99, 5]])
# 如果元素!=0,那么元素加1,否则元素加99
In [45]: np.where(data!=0, data+1, 99+data)
Out[45]:
array([[99, 4, 99],
[ 3, 99, 5],
[99, 99, 6]])