其他分享
首页 > 其他分享> > 9.29 模块

9.29 模块

作者:互联网

1.numpy模块:

用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学运算

#为什么要用numpy
lt1[1,2,3] #n个元素
lt2[4,5,6] 

lt=[]
for i in range(len(lt1)):
    lt.append(lt1[i]*lt2[i])
    
print(lt)
运行结果:
[4, 10, 18]
#此方法得到新列表[4,10,18]比较复杂

创建numpy数组(可变):numpy数组即numpy的ndarray对象,创建numpy数组就是把一个列表传入np.array()方法

import numpy as np

arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
print(arr1*arr2)

运行结果:
[ 4 10 18]
import numpy as np

arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
print(arr1*arr2)

#一维数组
print(np.array([1,2,3]))

#二位数组
arr=np.array([
    [1,2,3],
    [4,5,6]
])
print(arr)

#三维数组
arr3=np.array([
    [[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]
])
print(arr3)

#T 数组的转置(对高维数组而言)--》行列互转
print(arr,'\n',arr.T)

#dtype 数组元素的数据类型,numpy数组是属于Python解释器的;int32/float64属于numpy的
print(arr.dtype)

#size 数组元素的个数
print(arr.size)

#ndim 数组元素的维度
print(arr.ndim)
print(arr3.ndim)

#shape 数组的维度大小(以元组形式)
print(arr.shape) #(2,3)-->两行三列
print(arr.shape[0])
print(arr.shape[1])

#astype 类型转换

arr=arr.astype(np.float64)
print(arr)
#切片numpy数组
lt=[1,2,3]
print(lt[:])

arr=np.array([
    [1,2,3],
    [4,5,6]
])
print(arr[:,:]) #行,列都拿出来
print(arr[0,0]) #只拿出位置[0,0]的元素
print(arr[0,:])  #拿出第一行全部列的数
print(arr[:,-2:]) #拿出全部行倒数第二列和最后列的数

#逻辑取值
print(arr[arr>4])

# 赋值
lt=[1,2,3]
lt[:]=[0,0,0]
print(lt)

arr[0,0]=0
print(arr)

arr[0,:]=0
print(arr)

arr[:,:]=0
print(arr)

# 数组的合并

arr1=np.array([
    [1,2,3],
    [4,5,6]
])

arr2=np.array([
    [7,8,9],
    ['a','b','c']
])
print(np.hstack((arr1,arr2)))
print(np.vstack((arr1,arr2)))
print(np.concatenate((arr1,arr2),axis=1)) #默认以列合并,axis=0表示以列合并,axis=1表示以行合并

#通过函数创建numpy数组
print(np.ones((2,3))) #2行3列都是1
print(np.zeros((2,3))) #2行3列都是0
print(np.eye(3,3)) #右斜线都是1--》单位矩阵
print(np.linspace(1,100,10)) #构造一个等差数列,取头也取尾,从1,100,取10个数,第三个参数为数组长度
print(np.arange(2,10)) #顾头不顾尾
arr1=np.zeros((1,12))
print(arr1.reshape((3,4))) #重构形状

#numpy数组运算
#+-*/
arr1=np.ones((3,4))*4
print(arr1)

#numpy数组运算函数
print(np.sin(arr1))

# 矩阵运算--点乘
# numpy数组的点乘必须满足第一个numpy数组的列数等于第二个numpy数组的行数,即m∗n⋅n∗m=m∗m。
arr1=np.array([
    [1,2,3],
    [4,5,6]
])

arr2=np.array([
    [1,2],
    [3,4],
    [5,6]
])
#2*3.3*2=2*2
print(np.dot(arr1,arr2))

#求逆
arr=np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr)
# print(np.linalg.inv(arr))

#numpy数组数学和统计方法:
print(np.sum(arr[0,:]))

#numpy.random生成随机数(*****)
print(np.random.rand(3,4))
print(np.random.random((3,4)))

np.random.seed(1)

s=np.random.RandomState(1)
print(s.random((3,4)))

arr=np.array([[1,2,3],[4,5,6],[9,8,9]])
np.random.shuffle(arr)
print(arr) #第一行和最后一行换序

#针对一维
print(np.random.choice([1,2,3],1))
#针对某一个范围
print(np.random.randint(1,100,(3,4)))

2.matplotlib模块:画图

from matplotlib import pyplot as plt

from matplotlib.font_manager import  FontProperties

font=FontProperties(fname='C:\Windows\Fonts\msyh.ttf')

#修改背景色
plt.style.use('ggplot')
classes=['3班','4班','5班','6班']

classes_index=range(len(classes))
print(list(classes_index))
运行结果:
[0, 1, 2, 3]


# 散点图+直线图
import numpy as np
from matplotlib import pyplot as plt  # 约定俗成
from matplotlib.font_manager import FontProperties  # 修改字体

font = FontProperties(fname='C:\Windows\Fonts\simsun.ttc')

plt.style.use('ggplot')

fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)

x = np.arange(20)
y = x ** 2

x2 = np.arange(20)
y2 = x2

ax1.scatter(x, y, c='r', label='红')
ax1.scatter(x2, y2, c='b', label='蓝')

ax2.plot(x, y)
ax2.plot(x2, y2)

fig.suptitle('两张图', fontproperties=font, fontsize=15)
ax1.set_title('散点图', fontproperties=font)
ax2.set_title('折线图', fontproperties=font)
ax1.legend(prop=font)
plt.show()

3.名称空间

定义:存储变量名与变量间绑定关系的空间;

1.内置名称空间:存Python自带的名字,如,int,float,len。

生命周期:在解释器启动时候生效,解释器关闭时候失效。

2.全局名称空间:如x(变量名),func(函数名),lt(列表名)。

生命周期:文件执行时生效,执行完失效。

3.局部名称空间:存放函数调用期间,函数体产生的名字。

生命周期:文件执行时函数调用期间生效,函数执行结束后失效。

执行顺序:内置-->全局-->局部

查找顺序与执行顺序相反。

4.json模块

json 序列化能够达到跨平台传输交互数据的目的。

dic={'a':1,'b':2}
res=json.dumps(dic)
print(res)
#运行结果:{"a": 1, "b": 2}

json串中没有单引号,C语言里字符串用单引号只能存一个字符,双引号可存多个字符。

标签:arr,数组,9.29,np,模块,print,array,numpy
来源: https://www.cnblogs.com/lidandanaa/p/11643964.html