numpy部分常用函数

来源:互联网 发布:centos7编译安装mysql 编辑:程序博客网 时间:2024/05/21 17:29
reshape()//转化数组维度
import numpy as npprint("将一维数组转换为二维数组")arr = np.arange(8)print(arr.reshape((4, 2)))print(arr.reshape((4, 2)).reshape((2, 4)))
[[0 1] [2 3] [4 5] [6 7]][[0 1 2 3] [4 5 6 7]]

unique()//去重并排序
print('用unique函数去重')names = np.array(['Bob', 'Joe', 'Will', 'Ani','Bob', 'Will', 'Joe', 'Joe'])print(sorted(set(names)))  # 传统Python做法print(np.unique(names))ints = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4])print(np.unique(ints))
用unique函数去重['Ani', 'Bob', 'Joe', 'Will']#字母按照 abc顺序['Ani' 'Bob' 'Joe' 'Will'][1 2 3 4]

inld()
print('查找数组元素是否在另一数组')values = np.array([6, 0, 0, 3, 2, 5, 6])print(np.in1d(values, [2, 3, 6]))
[ True False False  True  True False  True]

sort()//排序
import numpy as npimport numpy.random as np_randomprint('二维数组排序')arr = np_random.randn(5, 3)print(arr)arr.sort(1) # 对每一行元素做排序print(arr)print('找位置在5%的数字')large_arr = np_random.randn(1000)large_arr.sort()print(large_arr[int(0.05 * len(large_arr))])

sum()//求和
print('对正数求和')arr = np_random.randn(100)print((arr > 0).sum())
对正数求和48
any()与all()
print('对数组逻辑操作')bools = np.array([False, False, True, False])print(bools.any()) # 有一个为True则返回Trueprint(bools.all()) # 有一个为False则返回False
对数组逻辑操作TrueFalse
mean()//求平均
print('求和,求平均')arr = np.random.randn(5, 4)print(arr)print(arr.mean())print(arr.sum())print(arr.mean(axis = 1))  # 对每一行的元素求平均 为0时 对每一列求平均print(arr.sum(0))  # 对每一列元素求和,axis可以省略。
cumsum()与cumpord()
print('cumsum和cumprod函数演示')arr = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])print(arr.cumsum(0))print(arr.cumprod(1))
[[ 0  1  2] [ 3  5  7] [ 9 12 15]][[  0   0   0] [  3  12  60] [  6  42 336]]
meshgrid()
points = np.arange(-5, 5, 0.01) # 生成100个点xs, ys = np.meshgrid(points, points)  # xs, ys互为转置矩阵
zip()
print('通过真值表选择元素')x_arr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])y_arr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])cond = np.array([True, False, True, True, False])result = [(x if c else y) for x, y, c in zip(x_arr, y_arr, cond)] # 通过列表推到实现
print(result)
[1.1000000000000001, 2.2000000000000002, 1.3, 1.3999999999999999, 2.5]
concatenate()//连接
arr1 = np.array([[1, 2, 3], [4, 5, 6]])arr2 = np.array([[7, 8, 9], [10, 11, 12]])print(np.concatenate([arr1, arr2], axis = 0))  # 按行连接print(np.concatenate([arr1, arr2], axis = 1)) # 按列连接
[[ 1  2  3] [ 4  5  6] [ 7  8  9] [10 11 12]][[ 1  2  3  7  8  9] [ 4  5  6 10 11 12]]

vstack()垂直堆叠与hstack()水平堆叠
print('垂直stack与水平stack')print(np.vstack((arr1, arr2)))# 垂直堆叠print(np.hstack((arr1, arr2)))# 水平堆叠
垂直stack与水平stack[[ 1  2  3] [ 4  5  6] [ 7  8  9] [10 11 12]][[ 1  2  3  7  8  9] [ 4  5  6 10 11 12]]

split //拆分
print('拆分数组')arr = np_random.randn(5, 5)print(arr)print('水平拆分')first, second, third = np.split(arr, [1, 3], axis = 0)print('first')print(first)print('second')print(second)print('third')print(third)print('垂直拆分')first, second, third = np.split(arr, [1, 3], axis = 1)print('first')print(first)print('second')print(second)print('third')print(third)
拆分数组[[ 1.61783002 -1.1345574   0.63230098 -1.56998762 -0.26738668] [-0.69902169 -0.42135528  0.54961425 -1.17912065 -0.56412522] [ 0.05401824  0.94835151  2.09323315 -0.27721887 -0.18710358] [ 0.73171842 -0.34138314 -1.68563918 -0.20844484  0.69971286] [ 0.82243311  0.05344138 -1.03953588  1.60052233 -0.75851984]]水平拆分first[[ 1.61783002 -1.1345574   0.63230098 -1.56998762 -0.26738668]]second[[-0.69902169 -0.42135528  0.54961425 -1.17912065 -0.56412522] [ 0.05401824  0.94835151  2.09323315 -0.27721887 -0.18710358]]third[[ 0.73171842 -0.34138314 -1.68563918 -0.20844484  0.69971286] [ 0.82243311  0.05344138 -1.03953588  1.60052233 -0.75851984]]垂直拆分first[[ 1.61783002] [-0.69902169] [ 0.05401824] [ 0.73171842] [ 0.82243311]]second[[-1.1345574   0.63230098] [-0.42135528  0.54961425] [ 0.94835151  2.09323315] [-0.34138314 -1.68563918] [ 0.05344138 -1.03953588]]third[[-1.56998762 -0.26738668] [-1.17912065 -0.56412522] [-0.27721887 -0.18710358] [-0.20844484  0.69971286] [ 1.60052233 -0.75851984]]

take()与put()
arr = np.arange(10) * 100inds = [7, 1, 2, 6]print('使用take')print(arr.take(inds))print('使用put更新内容')arr.put(inds,50)print(arr)arr.put(inds, [70, 10, 20, 60])print(arr)print('take,指定轴')arr = np_random.randn(2, 4)inds = [2, 0, 2, 1]print(arr)print(arr.take(inds, axis = 1))  # 按列take
[700 100 200 600]使用take[700 100 200 600]使用put更新内容[  0  50  50 300 400 500  50  50 800 900][  0  10  20 300 400 500  60  70 800 900]take,指定轴[[-0.41421153  1.87094071 -1.38985914 -0.25246155] [ 1.16803861  0.59288343  1.0799239   0.42735701]][[-1.38985914 -0.41421153 -1.38985914  1.87094071] [ 1.0799239   1.16803861  1.0799239   0.59288343]]


 
原创粉丝点击