numpy

numpy

  • 一、概念问题
  • 二、细节问题
    • 1、numpy创建数组
      • 1)numpy.arange()
      • 2)查看数组中数据的类型
    • 2、数组的形状
      • 1)数组维度
      • 2)修改数组形状
      • 3)数组的计算
    • 3、numpy读取和数据
    • 4、数组的拼接
  • 三、新内容新知识
    • 1、numpy中数值的修改
      • 1)直接指定赋值
      • 2)numpy的布尔赋值
      • 3)numpy的三元运算符
      • 4)numpy的clip(裁剪)
    • 2、数组的行列交换
    • 3、numpy的其他方法
    • 4、numpy中的nan和inf
      • 1)nan
      • 2)ing
    • 5、numpy中常用的统计函数
  • 参考资料:

这一块主要用于记录自己利用这段空闲时间,进一步提高自己使用numpy工具的能力,对一些模糊问题进行重新学习及强化。

一、概念问题

二、细节问题

1、numpy创建数组

1)numpy.arange()

t2=np.array(range(10))
# t2=[0 1 2 3 4 5 6 7 8 9]

t3=np.arange(10)
# t3=[0 1 2 3 4 5 6 7 8 9]

t4=np.arange(4,10,2)
# t4=[4 6 8]

arange:生成的数据类型是 数组(numpy.ndarray)。
range:生成的数据类型是列表(list)。

2)查看数组中数据的类型

a=np.arange(10)
print(a.dtype)	# int32

改变数组中数据的类型

b=a.astype('int64')
print(b.dtype)	# int64

修改数组中浮点型数据的小数位数

import random
c=np.array([random.random() for i in range(10)])
d=np.round(c,3)

2、数组的形状

1)数组维度

一维数组

t1=np.arange(5)
print(t1)	# [0 1 2 3 4]
print(t1.shape)	 # (5,),表示数组为一维数组,有5个元素。

二维数据

t2=np.array([[1,2,3],[4,5,6]])
print(t2)	
'''
 [[1 2 3]
 [4 5 6]]
'''
print(t2.shape)	# (2, 3),表示数组为二维数组,2行3列。

三维数组

t3=np.array([[[1,1,1,1],[2,2,2,2],[3,3,3,3]],[[4,4,4,4],[5,5,5,5],[6,6,6,6]]])
print(t3)	
'''
[[[1 1 1 1]
  [2 2 2 2]
  [3 3 3 3]]

 [[4 4 4 4]
  [5 5 5 5]
  [6 6 6 6]]] 
'''
print(t3.shape)		# (2, 3, 4),表示三维数组,2层3行4列

2)修改数组形状

修改形状:a.reshape

a=np.array(range(6))
b=a.reshape((2,3))	# b为2行3列的二维数组, a仍为有6个元素的一维数组。

b.reshape((6,1))	# 6行1列的二维数组
b.reshape((1,6))	# 1行6列的二维数组
b.reshape((6,))		# 6个元素的一维数组

b.flatten()			# 将数组b展开为一维数组

3)数组的计算

数组与数字之间的运算

a=np.arange(0,10).reshape((2,5))
b=a+2	# 每个元素都加上2
b=a-2	# 每个元素都减去2
b=a*2	# 每个元素均乘以2
b=a/2	# 每个元素都除以2

相同形状的数组与数组之间的运算

a=np.arange(0,10).reshape((2,5))
b=np.arange(10,20).reshape((2,5))
c=a+b	# 对应元素相加
c=a-b	# 对应元素相减
c=a*b	# 对应元素相乘
c=a/b	# 对应元素相除

不同形状的数组与数组之间的运算

a=np.arange(0,10).reshape((2,5))
b=np.array(2).reshape((2,1))
c=np.array(5)
d=np.arange(0,10)

m=a-b	# 行相同,都为2,a的每一行的每个元素减去b中对应行的元素
m=a-c	# 列相同,都为5,a的每一列的每个元素减去c中对应列的元素
m=a-d	# 行、列均不相同,无法进行减法运算。

3、numpy读取和数据

numpy从csv文件中读取数据
np.loadtxt(frame,delimiter=',',dtype=int,skiprows=0,unpack=False)
# frame:csv文件,所在的位置
# delimiter:csv文件中的数据,按照哪种符号分隔数据,比如:“,”、“;”等
# dtype:获取的数据按照哪种数字类型进行存储,比如:int,float等
# skiprows:获取的数据从csv文件的第几行开始获取。
# unpack:如果为False,每一行的数据组成一行;如果为True,每一列的数据组成一行,即为False结果的转置。

numpy中实现转置的三种方法

a=np.arange(10).reshape((2,5))
b=a.transpose()
b=a.T
b=a.swapaxes(1,0)

numpy的切片和索引
取不连续的多行数据

a=np.arange(20).reshape((4,5))
b=a[[0,1,3]]	# 取第0、1、3行数据
b=a[:,[0,2,4]]	# 取第0、2、4列数据

4、数组的拼接

竖直拼接(vertically)

a=np.arange(0,10).reshape((2,5))	# 2行5列
b=np.arange(10,20).reshape((2,5))	# 2行5列
c=np.vstack((a,b))					# 4行5列

水平拼接(horizontally)

a=np.arange(0,10).reshape((2,5))	# 2行5列
b=np.arange(10,20).reshape((2,5))	# 2行5列
c=np.hstack((a,b))					# 2行10列

三、新内容新知识

1、numpy中数值的修改

1)直接指定赋值

a=np.arange(10).reshape((2,5))
a[0,3]=0

2)numpy的布尔赋值

a=np.arange(10).reshape((2,5))
a[a<5]=10	# 将a中小于5的元素全部修改为10

3)numpy的三元运算符

a=np.arange(10).reshape((2,5))
b=np.where(a<5,0,10)	# 将a中小于5的元素全部修改为0,大于5的元素全部修改为10

4)numpy的clip(裁剪)

a=np.arange(10).reshape((2,5))
b=a.clip(3,7)	# 将a中小于3的元素全部修改为3,a中大于7的元素全部修改为7.

2、数组的行列交换

a=np.arange(15).reshape((3,5))
a[[0,2],:]=a[[2,0],:]	# 行交换
a[:,[1,3]]=a[:,[3,1]]	# 列交换

3、numpy的其他方法

获取最大值最小值的位置

a=np.arange(10).reshape((2,5))
b=np.argmax(a,axis=0)	# 返回a中所有行的最大值的索引
b=np.argmin(a,axis=1)	# 返回a中所有列的最小值的索引

创建一个全为0的数组:np.zeros((2,5))
创建一个全为1的数组:np.ones((2,5))
创建一个对角线为1的正方形数组:np.eye(3)

4、numpy中的nan和inf

1)nan

nan:not a number ,0除以0的结果,float。
两个nan是不相等的

print(np.nan==np.nan)	# False

利用上面的特性,可以判断数组中nan的个数

a=np.array([1.,2.,3.,np.nan,np.nan])
print(np.count_nonzero(a!=a))	# 2
print(np.count_nonzero(np.isnan(a)))	# 2
a[np.isnan(a)]=0	# 将a中的nan值替换为0

注意:nan和任何值计算都为nan。

2)ing

inf:infinity,无穷大,0以外的数字除以0的结果,float。

5、numpy中常用的统计函数

a=np.arange(10).reshape((2,5))

求和:a.sum(axis=None)
均值:a.mean(axis=None),受离群点的影响较大
中值:np.median(a,axis=None)
最大值:a.max(axis=None)
最小值:a.min(axis=None)
极值:np.ptp(a,axis=None),即最大值和最小值的差
标准差:a.std(axis=None),方差的二分之一次方。

如果不指定axis,则默认返回多维数组的全部数据的统计结果

参考资料:

1、学习视频

你可能感兴趣的:(Python,numpy,python,数据分析)