注:下面的几个例子修改自蔡驰聪《python数据分析从入门到精通》,因为自己最近在跟着这本书学习,所以一边看一边根据自己的理解修改案例
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# a=np.array((2,3,4,5,6,7,8,9,10))
# b=np.array([1,3,5,7,9,11,13])
#
# print(a)
# print(b)
#
# print(type(a))
# aa=np.arange(1,55,4)
# bb=np.ones((5,5))
# cc=np.zeros((9,11))
# dd=np.ones((2,1,3,4))
# print(aa)
# print(bb)
# print(cc)
# print(dd)
# print(aa.dtype)
# print(bb.dtype)
# print(cc.dtype)
# print(dd.dtype)
import pandas as pd
a=np.random.rand(5,10)
c=np.random.randint(1,99,10)
b=np.random.randint(low=3,high=99,size=(5,8))
d=np.random.randn(4,3)
# d=d.astype(np.int)
d2=pd.DataFrame(d)
d2.plot(kind="line")
e=np.random.sample(99)
e2=pd.DataFrame(e)
e2.plot(kind="line")
changeData=np.where(d>1,1,0)
print(a)
print(b)
print(d)
print(d[1:2,2:3])
print("------------")
print(changeData)
print(e)
print("------------")
print(e.shape)
print(d.shape)
print(e.size)
print(d.size)
print(e.dtype)
print(d.dtype)
print(e.ndim)
print(d.ndim)
print(e+1)
print(d+1)
print(e>1)
print(d>1)
qq=np.array([[7,6,8,9,11],[2,3,55,12,33]])
#给numpy数组添加元素时注意要维数对应,如果给2x3数组添加2x1数组元素,输出的数组就会带有list或其他添加的对应数据类型字母,且生成新的一维数组,旧的数组如果没有重新赋值还是旧值
qq2=np.append(qq,([1,2,3,4,5],[92,30,1,4,9]))
rr=np.array([[7,8,9,10,11,12],[2,3,4,5,6,7]])
#给numpy数组插入元素时注意要维数对应,一维数组只能添加一维元素,且生成新的数组,旧的数组如果没有重新赋值还是旧值
ss=np.insert(rr,1,[99,67,87,99,800,122],axis=0)#按行插入需要看插入的数组元素个数是否与原本位置的那行数组元素个数一致,不一致插入会报错
ss2=np.insert(rr,1,[800,122],axis=1)#按列插入需要看插入的数组元素个数是否与原本位置的那列数组元素个数一致,不一致插入会报错
print("=================")
print("qq的值为:",qq)
print("qq2的值为:",qq2)
print(qq2.ndim)
print("rr的值为:",rr)
print("ss的值为:",ss)
print("ss2的值为:",ss2)
print("-----------")
# ss2=np.delete(ss2,0,axis=0)
#
# print(ss2)
ss2=np.delete(ss2,0,axis=1)
print("---------")
print("ss2的值为:",ss2)
ss2.sort()
print("---------")
print("ss2的值为:",ss2)
ss2=ss2.T
print("---------")
print("ss2的值为:",ss2)
ss2=ss2.T
print("---------")
print("ss2的值为:",ss2)
ss2=np.flip(ss2)
print("---------")
print("ss2的值为:",ss2)
ss2=np.insert(ss2,1,[2,6,3,2,5,4],axis=0)
print(ss.shape)
print(ss2.shape)
print("---ss3的横向合并hstack值为:---贪吃蛇模式,新合并进来的数据在右边---")
ss3=np.hstack([ss,ss2])
print("ss3的值为:",ss3)
print("---ss4的的纵向合并vstack值为:---叠蛋糕模式,新合并进来的数据在底部---")
ss4=np.vstack([ss,ss2])
print("ss4的值为:",ss4)
print("---------------cut_ss3横向拆分hsplit,单个列表的元素个数变了,单个数组总列表数不变")
cut_ss3=np.hsplit(ss3,6)#横向切分,就是把竖的切断,某个维度的长度不支持等分,既不是偶数,拆分就会出错
print("ss3横向拆分的值为:",cut_ss3)
print("---------------cut_ss4纵向拆分vsplit,单个列表的元素个数不变,单个数组总列表数变了")
cut_ss4=np.vsplit(ss4,2)#纵向切分,就是把横的数据切断,某个维度的长度不支持等分,既不是偶数,拆分就会出错
print("ss4纵向拆分的值为:",cut_ss4)
ii=[]
print("ss4所有元素的和为:",ss4.sum())
ii.append(ss4.sum())
print("ss4所有元素的平均值为:",ss4.mean())
ii.append(ss4.mean())
# print("ss4所有元素的中位数为:",ss4.ndim)
print("ss4所有元素的最大值为:",ss4.max())
ii.append(ss4.max())
print("ss4所有元素的最小值为:",ss4.min())
ii.append(ss4.min())
print("ss4所有元素的标准差为:",ss4.std())
ii.append(ss4.std())
print("ss4所有元素的累计和为:",ss4.cumsum())
#ii.append(ss4.cumsum())
print("ii列表的值为:",ii)
ii2=pd.DataFrame(ii)
# ii2.plot(kind="line")
# ii2.hist(bins=10,figsize=(20,15))
# plt.show()
#按列求和
sum_lie=np.sum(ss4,axis=0)#axis的值只能为0或1
print("ss4按列求和值为:",sum_lie)
sum_lie=np.sum(ss4,axis=1)
print("ss4按行求和值为:",sum_lie)
"""
numpy数组的数学函数⬇⬇⬇
"""
data_abs=np.abs(ss4)
print("ss4的绝对值为:",data_abs)
data_sqrt=np.sqrt(ss4)
print("ss4的平方根值为:",data_sqrt)
data_square=np.square(ss4)
print("ss4的平方值为:",data_square)
data_sign=np.sign(ss4)
print("ss4的正负值为:",data_sign)
data_ceil=np.ceil(ss4)
print("ss4向上取整值为:",data_ceil)
data_floor=np.floor(ss4)
print("ss4向下取整值为:",data_floor)
data_log=np.log(ss4)
print("ss4以e为底的对数值为:",data_log)
data_log10=np.log10(ss4)
print("ss4以10为底的对数值为:",data_log10)
data_log2=np.log2(ss4)
print("ss4以2为底的对数值为:",data_log2)
data_sin=np.sin(ss4)
print("ss4的sin值为:",data_sin)
data_cos=np.cos(ss4)
print("ss4的cos值为:",data_cos)
data_tan=np.tan(ss4)
print("ss4的tan值为:",data_tan)
"""
numpy数组的数学函数⬆⬆⬆
"""
"""
numpy数组随机选择元素⬇⬇⬇
"""
print("ss4是一个",ss4.shape,"的数组")
#注意choice函数的第一个参数必须是一维数组,且其元素个数必须和概率的元素个数一致,不然就会报错
data_choice=np.random.choice(ss4[0],(3,5),p=(0.1,0.2,0.1,0.3,0.2,0.1))
print("ss4按概率分布生成的数组为:",data_choice)
data_shuffle=np.random.shuffle(ss4)
print("ss4的随机排列的值为:",data_shuffle)
"""
numpy数组随机选择元素⬆⬆⬆
"""
"""
复制numpy数组⬇⬇⬇
"""
print("ss4是一个",ss4.shape,"的数组")
#注意choice函数的第一个参数必须是一维数组,且其元素个数必须和概率的元素个数一致,不然就会报错
data_copy=np.copy(ss4)
print("ss4数组data_copy的复制值为:",data_copy)
#数组的切片选取只有一个参数,在赋值时会把选中的整行都改成新赋的值
data_copy2=np.copy(ss4)
data_copy2[0]=99
print("ss4数组data_copy2新更改的值为:",data_copy2)
#数组的切片选取不止一个参数,即只选择一个元素时,在赋值时只把选中的改成新赋的值
data_copy3=np.copy(ss4)
data_copy3[0,0]=99
print("ss4数组data_copy3新更改的值为:",data_copy3)
"""
复制numpy数组⬆⬆⬆
"""