Python数据分析numpy类库常用方法总结

一、数组的创建、删除等相关操作

​

import numpy as numpy
#创建Numpy一维数组
arr1 = np.array([1,2,3,4])
print('一维数组:',arr1)
#创建二维数组
arry2 = np.array([[1,2,3],[4,5,6]])
print('二维数组:',arr2)
#设置最小维度3
arr3 = np.array([1,2,3,4],ndmin=3)
print('三维数组:',arr3)

#创建二维数组
arr1 = np.array([[1,2,3],[4,5,6]])
print('数组维度:',arr1,ndim)
print('数组形状:',arr1.shape)
print('数组的元素总数:',arr1.size)
print('数组元素的数据类型:',arr1.dtype)

#创建一维数据
arr = np.array([1,2,6,8,9,10,12])
a = arr[4]              #获取第五个元素
print(a)
#一维数组切片
b1 = arr[1:6:2]         #b1数组[2 8 10]
b2 = arr[:5]            #b2数组[1 2 6 8 9]
b3 = arr[2:]            #b3数组[6 8 9 10 12]
print(b1,b2,b3)
#修改数组中元素
arr[1:3] =20,30
print(arr)

#创建二维数据
arr = np.array([[0,1,2,3,4],[5,6,7,8,9]])
a =arr[1,3]
print(a)
#二维数组切片
b1 = arr[:2,1:3]
b2 = arr[1:,2:5]
b3 = arr[:2:2,:3:2]
b4 = arr[...,1:3]
b4 = arr[...,1:3]
print(b1,b2,b3,b4)
#修改数组中元素
arr[:2:2,:3:2] = 44,55
print(arr)

#数组的索引
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = a[a>3]
print(a>3)
print(b)

#创建3行4列数组
arr = np.array([[0,1,2,4],[5,6,7,8],[9,10,11,12]])
#显示数组形状
print(arr.shape)
#用shape属性改变数组形状为4行3列
arr.shape = (4,3)               #将arr数组形状修改围行3列
print(arr,arr.shape)
#用reshape函数生成形状为2行6列数组arr_b
arr_b = arr.reshape((2,6))      #生形状为2行6列数组arr_b,arr数组没变化
print(arr,arr_b)
#用resize函数改变数组arr形状为2行6列
arr_c = arr.resize((2,6))       #arr改变形状为2行6列数组,arr_c为None
print(arr,arr_c)


#数组的展平
#数组的展平,创建3行4列数组
arr = np.array([[0,1,2,4],[5,6,7,8],[9,10,11,12]])
#展平arr数组,但arr数组不改变
arr_b = arr.ravel()
print(arr,arr_b)


#数组转置和轴对换
#创建数组2行5
arr = np.arange(10).reshape(2,5)
print(arr)
print('转置数组:')
print(arr.T)

#用rollaxis函数
arr = np.arange(8).reshape(2,2,2)
print('原数组:',arr)

# 将轴 2 滚动到轴 0(宽度到深度)
print('调用 rollaxis 函数:')
print(np.rollaxis(arr,2))


#数组连接
#创建数组arr1
arr1 = np.array([[1,2,3], [4,5,6]])
print('第1个数组arr1:',arr1)
#创建数组arr2
arr2 = np.array([['a',8,9], ['b',11,12]])
print('第2个数组arr2:',arr2)

# 注意两个数组的维度相同
#concatenate函数
print('沿轴0连接两个数组:')
print(np.concatenate((arr1, arr2),axis=0))
print('沿轴 1 连接两个数组:')
print(np.concatenate((arr1, arr2),axis=1))

#stack函数
print('沿轴 0 堆叠两个数组:')
print(np.stack((arr1, arr2),0))
print('沿轴 1 堆叠两个数组:')
print(np.stack((arr1, arr2),1))


#数组切割
#创建数组arr1
arr1 = np.array([[1,2,3],
                 [4,5,6]])
print('第1个数组arr1:',arr1)
#创建数组arr2
arr2 = np.arange(1,18,2)
print('第2个数组arr2:',arr2)


#使用split函数
print('将arr1数组竖直分割为2个大小相等的子数组:')
print (np.split(arr1,2))
print('将arr1数组水平分割为3个大小相等的子数组:')
print (np.split(arr1,3,1))
print('将arr2数组在一维数组中表明的位置分割:')
print (np.split(arr2, [2, 4 , 8]))


#数组的添加和删除
#创建数组arr  append
arr = np.array([[1,2,3,4], [5,6,7,8]])
print('第1个数组arr:',arr)
print('原数组:',arr)
print('沿轴 0 添加元素:')
print(np.append(arr,[[9,10,11,12],[11,11,11,11]], axis=0))
print('沿轴 1 添加元素:')
print(np.append(arr,[[9,10],[11,12]], axis=1))


#创建数组arr
arr = np.array([[11,12,13,14], [15,16,17,18]])
print('第1个数组arr:',arr)
print('未传递axis参数。在插入之前输入数组会被展开。')
print(np.insert(arr,4,[9, 10,11,12]))
print('传递了axis参数,会广播值数组来配输入数组。')
print('沿轴 0 广播:')
print(np.insert(arr, 2, [9], axis=0))
'''
[[11 12 13 14]
 [15 16 17 18]
  [9  9  9  9]
 ]
'''
print('沿轴 1 广播:')
print(np.insert(arr, 2, [9], axis=1))
print('沿轴 0 插入:')
print(np.insert(arr, 2, [9,10,11,12], axis=0))
print('沿轴 1 广播:')
print(np.insert(arr, 2, [[9],[10]], axis=1))
print('沿轴 1 插入:')
print(np.insert(arr, 2, [[9,10],[11,12]], axis=1))

#删除数组元素
#np.delete(arr,obj,axis)
'''
arr = np.arange(1,17).reshape(4,4)
print('第1个数组arr:',arr)
print('未传递 axis 参数。在删除之前输入数组会被展开。')
print(np.delete(arr,[6,9,12]))
print(arr)
print('删除第3列:')
print(np.delete(arr, 2, axis=1))
print(arr)
print('删除第2行:')
print(np.delete(arr, 1, axis=0))
print(arr)
print('从数组中删除用切片表示元素范围值:')
print(np.delete(arr, np.s_[2::2]))


​

二、数组的矢量计算

# 数组的矢量计算
# 一维数组的矢量计算
arr_a = np.arange(4)
arr_b =np.array([0,1,1,0])
arr_c = arr_a * arr_b
print(arr_c,arr_a,arr_b)
print(-arr_b)
print(arr_a**2)

#不同形状的二维数组的运算(广播机制)
arr_1 = np.arange(6).reshape(2,3)
arr_2 = np.arange(3)
print(arr_1)
print(arr_2)
arr_3 = arr_1 + arr_2
print(arr_3)

#数组的通用函数
arr_1 = np.arange(1,7)
print(arr_1)
a = np.sqrt(arr_1)
print(a)
print(np.add(arr_1,2))


#矩阵的创建和基本操作
#如何 创建矩阵
str = '1 2 3;4 5 6'
a = np.mat(str)
print(a)
arr_1 = np.arange(6).reshape(2,3)
b =np.mat(arr_1)
print(b)
print(a+b)
# 不同行数(非1行)的矩阵是不能想加的


#随机函数
b = np.random.rand(2,3)
print(b)

a = np.random.randint(20,size=(2,4))
print(a)


#实例如下
#2
a = [6,2,5,0,1,3,4,7,8,9]
arr = np.array(a).reshape(2,5)
print(arr)
print(np.split(arr,2))
'''
#4
a = [6,2,5,0,1,3,4,7,8,9,10,11]
arr = np.array(a).reshape(3,4)
print(arr)
print(arr[:2,:2])
print(arr[2])
print(arr[1:,2:])

三、统计函数

import numpy as np
import pandas as pd
aa =d'.\JDdata.xls'
df = pd.DataFrame(pd.read_excel(aa))
#print(df)
df1 =df[["金额"]]
#print(df1)
arr = df1.values
print(arr)

'''
#m = np.max(arr,axis=0)
m = np.nanmax(arr,axis=0)
#n = np.nanmin(arr,0)
n = np.nanmin(arr)
print("金额的最大值是",m)
print("金额的最小值是",n)
print("总金额是",np.nansum(arr,0))
arr1 = np.random.randint(10,size=(3,4))
print(arr1)
# print("arr1最大值是",np.nanmax(arr1))
# print("arr1竖直方向最大值是",np.nanmax(arr1,0))
# print("arr1水平方向最大值是",np.nanmax(arr1,1))
# print("某一列的范围",np.ptp(arr1,0))
# print("某一行的范围",np.ptp(arr1,1))

#求和和加权平均值
#print(np.sum(arr1,1)) (6+7+24)/6  37/6   (18+9+3)/6
#print(np.average(arr1,1,[2,1,3,1]))

#算数平均值
print(np.mean(arr1,axis=0))


#标准差和方差 和 平均值
#方差
print(np.var(arr1,axis=0))

#标准差
print(np.std(arr1,axis=0))
arr1 = np.random.randint(10,size=(3,4))

#数组的排序
print(arr1)
arr2 =np.sort(arr1,1);
print(arr2)
dt=np.dtype([('name',np.str,10),('age',np.int)])
arr3=np.array([("张三",19),("李四",23),("王五",29),("赵柳",24)],dtype=dt)
print(arr3)
print(np.sort(arr3,order="age"))
'''

#数组的去重复
arr1 = np.random.randint(10,size=(3,4))
print(arr1)
arr2 =np.unique(arr1)
print(arr2)
a =np.tile(arr1,3)
print(a)
b= np.repeat(arr1,2,axis=0)
print(b)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值