python数据分析之numpy基础知识

numpy是开源数值计算拓展,用于储存和处理大型矩阵。

一、导入numpy

import numpy as np

二、产生数组

 举例 数组相加

a=np.array([1,2,3,4])
b=np.array([2,3,4,5])
print(a*2) #[2 4 6 8]
print(a+b) #[3 5 7 9]

1. 列表生成数组

lst=[0,1,2,3]
a=np.array(lst)

a=np.array([1,2,3,4])

2. 生成全0或全1数组

#默认浮点数
np.zeros(5) 
np.ones(5)

#dtype指定数据类型
np.ones(5,dtype='int') 
np.ones(5,dtype="bool") #[true,true,true,true,true]

a=np.array([1,2,3,4])
a.fill(5) #[5,5,5,5]

dtype数据类型必须统一

数据类型转换

a=a.astype('float')

3. 生成整数序列

a=np.arange(1,10,2) #[1 3 5 7 9]

4. 生成等差数列

#np.linspace(start,stop,num)
a=np.linspace(1,10,11) #[ 1.   1.9  2.8  3.7  4.6  5.5  6.4  7.3  8.2  9.1 10. ]

5. 生成随机数组

a=np.random.rand(5) #[0.02962757 0.51867239 0.64026669 0.42642813 0.77117995]

#np.random.randn(num) 符合标准正态分布的随机数
a=np.random.randn(5) #[ 0.68557635 -0.656888   -2.131275    0.29222199  2.14085795]

#np.random.randint(start,stop,num) 随机整数
a=np.random.randint(1,10,5) #[3 1 4 3 5]

三、数组属性

#数组属性
print(type(a)) #<class 'numpy.ndarray'>
#数组值的属性
print(a.dtype) #int32
#数组维度
print(a.ndim) #1 一维数组
#数组维度值
print(a.shape)
print(np.shape(a)) #(5,) 第一维度中有五个元素
#数组中元素数目
print(a.size) #5

四、索引和切片(同python)

a=np.array([1,2,3,4])
print(a[0])
a=np.random.randint(1,10,5)
print(a)
print(a[:2])
print(a[-4:3])
###
# [3 8 7 8 4]
# [3 8]
# [8 7]

五、多维数组(同一维数组)

a=np.array([[1,2],[3,4]])
print(a)
###
#[[1 2]
# [3 4]]
print(a.shape) #(2, 2)
print(a.size) #4
print(a.ndim) #2

1. 索引和切片

print(a[1,1]) #4
print(a[0]) #[1 2]
print(a[:,1]) #[2 4]->第二列
print()
a=np.array([[1,2,3],[3,4,5]])
print(a[1,::2]) #3 5]->第二行的奇数列

切片使用引用机制,即会改变原数值。列表中不使用该机制。可使用copy()申请新的内存空间。

2. 花式索引

花式索引返回的对象是复制。

a=np.arange(0,100,10) #创建等差数列
#index数组指定索引位置
index=[1,2,-3]
y=a[index]
print(y) #[10 20 70]

#使用布尔数组指定索引
b=np.array([0,2,0,3,1,4,3,1,0,0],dtype=bool)
print(b) #[False  True False  True  True  True  True  True False False]
print(a[b]) #[10 30 40 50 60 70]

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

六、where语句

返回所有非零元素的索引

#判断数组元素是否大于1
a=np.array([1,3,2,0,1])
print(np.where(a>1))
#(array([1, 2], dtype=int64),)

#返回元组中大于1的数
#a>1返回一个布尔类型数组
print(a>1) #[False  True  True False False]
print(a[a>1])
print(a[np.where(a>1)]) #[3 2]

七、类型转换

1. dtype

2. asarray

a=np.array([1,2,3])
a=np.asarray(a,dtype=float)
print(a) #[1. 2. 3.]

3. astype 返回新的数组

八、数组排序

#数组排序,不影响原数组
a=np.array([1,2,1,2,1])
print(np.sort(a)) #[1 1 1 2 2]

#返回从小到大数组排序后的索引
order=np.argsort(a)
print(order) #[0 2 4 1 3]

九、常用计算函数

       求和 np.sum()

       最大值 np.max()

       最小值 np.min()

       均值 np.mean()

       标准差 np.std()

       相关系数矩阵 np.cov()

十、多维数组操作

1. 生成随机多维数组

#3×3×3数组
print(np.random.random((3,3,3)))

2. 更改数组形状

#改变原数组形状
a=np.array([1,2,1,2,1,3])
a.shape=2,3
print(a)
'''
[[1 2 1]
 [2 1 3]]
'''

#不改变原数组形状
a.reshape(1,6)
print(a)
'''
[[1 2 1]
 [2 1 3]]
'''

3. 数组转置

print(a)
'''
[[1 2 1]
 [2 1 3]]
'''
print(a.T)
'''
[[1 2]
 [2 1]
 [1 3]]
'''
print(a.transpose())
'''
[[1 2]
 [2 1]
 [1 3]]
'''

4. 数组连接

x=np.array([[0,1],[2,3]])
y=np.array([[4,5],[6,7]])
print(x.shape) #(2, 2)
print(y.shape) #(2, 2)

#默认沿着第一维连接
z=np.concatenate((x,y))
print(z)
'''
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
'''

#axis默认为0,按列连接
z=np.concatenate((x,y),axis=1)
print(z)
'''
[[0 1 4 5]
 [2 3 6 7]]

#连接成三维数组
z=np.array((x,y))
print(z)
'''
[[[0 1]
 [2 3]]

 [[4 5]
 [6 7]]]
'''

#纵向
print(np.vstack((x,y)))
'''
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
'''

#横向
print(np.hstack((x,y)))
'''
[[0 1 4 5]
 [2 3 6 7]]

#深度
print(np.dstack((x,y)))
'''
[[[0 4]
 [1 5]]

 [[2 6]
 [3 7]]]
'''

十一、numpy内置函数

NumPy 参考手册 | NumPy

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值