文章目录
前言
本文为学习笔记
一、导入的库
import matplotlib.pyplot as plt
import numpy as np
import random
二、使用
1.创建数组
#一维
np.array([1,2,3])
#二维
score = np.array([[1,2,3],
[3,4,5],
[6,7,8]])
print(score)
#三维
np.array([[[1,2,3],
[3,4,5],
[6,7,8]],
[[1,2,3],
[3,4,5],
[6,7,8]]])
2.ndarray属性
#创建数组
score = np.array([[[1,2,3],
[3,4,5],
[6,7,8]],
[[1,2,3],
[3,4,5],
[6,7,8]]])
#几行几列
print(score.shape)
#数组维数
print(score.ndim)
#元素里面多少个数据
print(score.size)
#返回字节长度
print(score.itemsize)
#类型
print(score.dtype)
3.ndarray的类型
#修改类型
#浮点
a= np.array([[1,2,3],
[3,4,5],
[6,7,8]],dtype=np.float32)
print(a.dtype)
#字符串
a= np.array([['w','2','3'],
['3','4','5'],
['6','7','8']],dtype=np.string_)
print(a.dtype)
4.生成数组
#生成0,1数组
zero0 = np.zeros([1,2]) #一行两列
one1 = np.ones([4,8]) #四行八列
print(zero0,one1)
zero2 = np.zeros_like(one1) #转换
print(zero2)
#从现有数组生成 array(深拷贝)和asarray(浅拷贝)的区别:
a = np.array([[1,2,3],[4,5,6]])
a1 = np.array(a)
a2 = np.asarray(a)
print(a1,a2)
a[0,0] = 100
print(a,a1,a2)
b = np.linspace(0,100,11) #生成0~100范围11个间隔的数据
print(b)
b2 = np.arange(0,100,11) #生成0~100范围且距离为11的所有数据
print(b2)
b3 = np.logspace(0,3,4) #4/4X10的0次方 4/4X10的1次方 4/4X10的2次方 4/4X10的4次方 == 10的零次方~10的3次方生成4个等间隔的数字
print(b3)
c = np.random.rand(2,3) #返回0-1内一组均匀分布的数据 两行三列
print(c)
c2 = np.random.uniform(low=1,high=10,size=(2,3)) #返回1-10之间均匀分布的两行三列数据
print(c2)
c3 = np.random.randint(1,10,(2,3)) #返回1-10均匀分布的整数数组 两行三列
print(c3)
d = np.random.normal(1.75,1,1000000000)
# print(d)
plt.figure(figsize = (10,10),dpi=100) #1创建画布
plt.hist(d,bins=1000) # 2.绘制图形
plt.show()
c4 = np.random.uniform(-1,1,100000000)
print(c4)
plt.figure(figsize = (10,10),dpi=100) #1创建画布
plt.hist(c4,bins=1000) # 2.绘制图形
plt.show() #展示
5.数组索引
#直接索引 先行后列
a = np.array([[[1,2,3],[3,4,5]],[[5,6,7],[7,8,90]]])
print(a)
print(a[0,0,0]) #第一组里第一个里的第一个数据
6.形状,行列,类型修改reshape/resize/T/normal
b = np.random.normal(0, 1, (4, 5))
print(b)
b2 = b.reshape(-1,10) #改成10列 行数自适应
print(b2)
b.resize([5,4]) #改成五行四列 数据是把所有数据平铺后重新排列 是对原数据进行修改 没有返回值
print(b)
b3 = b.T #行转列 列转行
print(b3)
c = b.astype(np.int32) #转各种
print(c)
c2 = c.tostring() #转字符串
print(c2)
7.数组去重unique
a = np.array([[1,2,3],[1,2,3],[1,2,3]]) #数据
a1 = np.unique(a) #去重
print(a1)
8.ndarray的运算
a = np.random.normal(0,1,(8,10))
print(a)
a2 = a[0:5,0:5]
print(a2)
print(a2>1) #大于1的值 返回T F
a2[a2>1] = 2 #让大于1的值=2
print(a2)
#判断
b = a[0:5,0:3]
b2 =np.all(b>0) #全为真 为真
print(b2)
b3 = np.any(b>0) #有为真 为真
print(b3)
#where三元运算符 满足要求赋值第一个值 不满足赋值第二个值
c = b
print(c)
c1 = np.where(c>0,1,0) #真为1,假为0
# print(c1)
c2 = np.where(np.logical_and(c>-1,c<2),1,0) #与
# print(c2)
c3 = np.where(np.logical_or(c>-0.2,c>0),1,0) #或
print(c3)
d = np.random.normal(0,1,(5,4))
print(d)
d1 = d.max() #最大值
print(d1)
d11 = d.max(axis=1) #axis=1每行的最大值 axis=0为每列的最大值
print(d11)
d2 = d.min() #min
print(d2)
d3 = d.argmax(axis=1) #axis=1每一行的最大值的下标 axis=0为每列的最大值
print(d3)
9.数组之间的运算
#+ - x / 数组和数字 数组和数组
a= np.array([1, 2, 3, 4])
print(a + 1)
print(a / 2)
a2 = np.array([[1, 2, 3, 4, 5], [1, 3, 4, 6, 7]])
a3 = np.array([[2], [3]])
print(a2 + a3)
#矩阵乘法 点乘
b = np.array([[1,2],
[2,3],
[3,4],
[4,5],
[5,6],
[6,7]])
b2 = np.array([[9],[8]])
b3 = np.matmul(b,b2) #matmul相乘 不支持矩阵和数字的相乘
print(b3)
b4 = np.dot(b,b2) #点乘
print(b4)
#区别
b5 = np.dot(b,10)
print(b5)
总结
…