Python——Numpy数值计算基础

导入Numpy包

import numpy as np   //np是用来指代numpy的 可以用别的 也可以不输入 as np

数组的创建

numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)
//object 接受array_like。表示想要创建的数组。无默认。
//dtype 接受data-type。表示数组所需数据类型,如果未给定,则选择保存对象所需的最小类型。默认为None//ndmin 接受int。指定生成数组应该具有的最小维数。默认为None

arr1 = np.array ([0.3,0.5,4.2])
arr2 = np.array([[3,4,5],[4,2,1]])
print(arr1)
print(arr2)
print(type(arr1))

Python——Numpy数值计算基础_第1张图片

数组的属性

ndim //返回int。表示数组的维度
shape //返回tuple。表示数组的尺寸,对于n行m列的矩阵,形状为(n,m)
size //返回int。表示数组的元素总数,等于数组形状的乘积
dtype //返回data-type。描述数组中元素的类型
itemsize //返回int。表示数组的每个元素的大小(以字节为单位)。

print(arr1.shape)
print(arr1.ndim)
print(arr1.dtype)
print(arr2.shape)
print(arr2.ndim)
print(arr2.dtype)

Python——Numpy数值计算基础_第2张图片

创建常用数组

arr3=np.arange(0,10) //创建一个从010的数组  默认间距为1 遵循左闭右开的原则,即左边是闭区间,右边是开区间 所以只能取到09
arr4=np.arange(10) //同上
arr5=np.arange(0,1,0.1) //创建一个从01的数组 间距是0.1 因为左闭右开 只能取到00.9

Python——Numpy数值计算基础_第3张图片

arr6=np.linspace(0,1,11) //0取到1 总共11个数字

Python——Numpy数值计算基础_第4张图片

arr7=np.zeros([3,4])  //生成一个三行四列的全0数组 2维数组
arr7=np.zeros([3,4,5])   //生成一个三行四列五层的全0数组  3维数组
arr7=np.zeros([3])  //生成一个三个元素的全0数组 1维数组

Python——Numpy数值计算基础_第5张图片
Python——Numpy数值计算基础_第6张图片
Python——Numpy数值计算基础_第7张图片

数组的数据类型

Python——Numpy数值计算基础_第8张图片
Python——Numpy数值计算基础_第9张图片

生成随机数

#生成随机数
print(np.random.random(10))   #生成10个无约束的随机数
print(np.random.rand(3,4))     #生成0到1之间均匀分布的随机数 并且三行四列
print(np.random.randn(2,2,2))   #生成指定shape的正态分布的随机数,两行两列两层



[0.26341543 0.1852021  0.38837372 0.30196201 0.07496407 0.77995341
 0.66488621 0.68118847 0.49476681 0.1190497 ]
 
[[0.05325184 0.88976184 0.03056858 0.5052506 ]
 [0.8112221  0.98758908 0.5735309  0.78384449]
 [0.75242482 0.63576694 0.08517221 0.06276684]]
[[[ 0.39608223  0.16737085]
  [-0.21105034 -0.72246626]]

 [[-1.790807    0.68775253]
  [-0.46964647  0.99793275]]]

Python——Numpy数值计算基础_第10张图片

一维数组的索引

Python——Numpy数值计算基础_第11张图片

#数组的索引
arr1 = np.array([0.3,0.78,0.24,5,3.2])
print(arr1)
print(arr1[0])    #一维数组的单个元素
print(arr1[-5])   #倒序索引
print(arr1[1:3])#切片查询 左闭右开区间  取出来的类型是列表
print(arr1[-4:-2]) #倒序
res1 = arr1[3]
res2 = arr1[3:4]
print(res1,res1.shape)
print(res2,res2.shape) #切片查询会夹带原本的数据结构 因此返回的值是列表 (1,)代表是一维数组



[0.3  0.78 0.24 5.   3.2 ]
0.3
0.3
[0.78 0.24]
[0.78 0.24]
5.0 ()
[5.] (1,)



逻辑型索引

#逻辑型索引
arr2 = np.array([2.3,1.8,4.5])
print(arr2)
print(arr2[[False,False,True]]) #设置元素索引 因为前两个元素的索引值为False,所以就不会被取出来

index = arr2 > 2   #数组内的每个元素都和2比较
print(index)        #查看比较结果
print(arr2[index])

Python——Numpy数值计算基础_第12张图片

多维数组的索引

#多维数组的索引
arr3 = np.arange(1,13).reshape([3,4])  #生成12个数 按三行四列排序
print(arr3)
print(arr3[2,3])      #取出12  确定目标元素的行列来取出元素
print(arr3[2,0:])           #取出第2行的数据
print(arr3[:,0])      #取出第0行的数据
print(arr3[1:3,1:3])



print(arr3[2:,:])     #取出第2行的数据 且返回的数据形态是二维数组
print(arr3[arr3[:,0]>4,:])      #取出所有大于4的数据

Python——Numpy数值计算基础_第13张图片

修改数组中的元素

#修改数组中的元素
arr3 = np.arange(1,13).reshape([3,4])  
print(arr3)
arr3[0,0] = 15  #修改数组元素
print(arr3)

Python——Numpy数值计算基础_第14张图片

求解距离矩阵

#求解距离矩阵
n = 3   #样本个数
x = np.linspace(1,100,n)   #样本的横坐标
y = np.linspace(1,100,n)   #样本的纵坐标

dist = np.zeros([n,n])        #初始距离矩阵

for i in range(n):
    for j in range(n):
        dist[i,j] = np.sqrt((x[i]-x[j])**2+(y[i]-y[j])**2)

print(x)
print(y)
print(dist)

Python——Numpy数值计算基础_第15张图片

变换数组Shape

#变换数组shape
arr4 = np.arange(1,13)
print(arr4)
print(arr4.reshape([3,4]))

arr5 = arr4.reshape([3,4])
print(arr5)
print(arr5.ravel())  #数组展平
arr5.flatten('F')   #添加  F  按列展平 ,不添加 按行展平

arr6 = arr4.reshape([3,4])
print(arr6)
print(np.vstack([arr5,arr6]))  #把两个数组纵向向拼接
print(np.hstack([arr5,arr6]))   #把两个数组横向拼接

Python——Numpy数值计算基础_第16张图片

Numpy通用函数介绍

 #Numpy通用函数介绍
arr1 = np.array([0.2,0.4,0.6])
arr2 = np.array([0.2,0.6,0.78])
list1 =  [0.2,0.4,0.6]


print(arr1+1)     #所有元素加1
print(arr1*2)       #所有元素乘以二
print(list1 * 2)     #注意返回值
print(arr1 + arr2)    #对应元素相加
print(arr1 * arr2)    #对应元素相乘

print(np.any(arr1==0.2))    # 逻辑 or
print(np.all(arr1==0.2))    # 逻辑 and



Python——Numpy数值计算基础_第17张图片

通用函数的广播机制

Python——Numpy数值计算基础_第18张图片

#通用函数的广播机制
arr3 = np.arange(1,13).reshape([4,3])
arr4 = np.array([1,2,3])
arr5 = np.array([[1],[2],[3],[4]])
print(arr3)
print(arr4)
print(arr5)
print(arr3 + arr4)
print(arr3 + arr5)

Python——Numpy数值计算基础_第19张图片

利用Numpy进行统计分析

Python——Numpy数值计算基础_第20张图片

## 利用Numpy进行统计分析
arr1 = np.arange(1,13).reshape([4,3])
arr2 = np.arange(1,13).reshape([3,4])
print(arr1)
print(arr2)

np.save('tmp/arrq.npy',arr1)     #保存到相应位置
arr1_load =np.load('tmp/arrq.npy')   #读取数据
print(arr1_load)

np.savez('tmp/arr1&2.npz',arr1,arr2)    #保存多个数组数据
arr1_2_load=np.load('tmp/arr1&2.npz')
print(arr1_2_load)     #这样只能查看到内存地址
print(arr1_2_load.files)       #查看数据文件中有哪些数组对象
print(arr1_2_load['arr_0'])

Python——Numpy数值计算基础_第21张图片

Numpy读写txt文件

Python——Numpy数值计算基础_第22张图片

#Numpy读写txt文件
np.savetxt('tmp/arr1.txt',arr1,delimiter=',')  #保存数据   ,设置用逗号间隔数据
np.loadtxt('tmp/arr1.txt',delimiter=',')       #读取数据

在这里插入图片描述

利用Numpy进行简单的统计分析

#使用数组进行简单统计分析
arr3 = np.random.randint(1,10,(3,4))
print(arr3)

arr3.sort(axis=0)   #对数组元素按大小进行排序
print(arr3)
arr3.argsort(axis=0)   #返回排序后的下标


np.tile(arr3,2)      #对数组进行复制操作
np.repeat(arr3,2,axis=1)     #对数组元素一个一个复制           



print(arr3.mean())   #统计数组所有元素的均值
print(arr3.mean(axis=0))     #按列统计数组的均值
print(arr3.max(axis=0))             #按列统计数组的最大值



arr3.argmax(axis=0)       #找出每列元素最大值的位置

Python——Numpy数值计算基础_第23张图片

你可能感兴趣的:(python,numpy)