python之numpy一天入门教程

python之numpy入门教程

前言

时间一晃而过,近来只顾玩耍,好久没有更新博客,今天终于想起来要做点事情了,所以今天就写一下numpy的入门教程。小菜也是刚开始学,还望多多指点。

  1. array结构
import numpy as np
A = np.array([1,2,3,4,5])
print(A) #输出 [1 2 3 4 5]

A2 = A + 1
print(A2) #,所有数都会加1,输出 [2 3 4 5 6]

A3 = A*A2
print(A3) #相当于两个数组对应数相乘,也可以理解为线性代数中两个矩阵相乘输出 [2 6 12 20 30]

print(A[0]) #输出第一个数 1

print(A.shape) #输出数组的维度,输出为(5,)

A4 = np.array([[1,2,3],[4,5,6]])
print(A4) #二维数组,输出为[[1 2 3]
                          #[4 5 6]]


A_list = [1,2,3,4,5]
A_array = np.array(A_list)
print(A_array) #输出[1 2 3 4 5]
print(type(A_array)) #A_array的类型,输出是为<class 'numpy.ndarray'>
print(A_array.dtype) #A-array的数据类型,输出为int32
#注 对于ndarry结构来说,里面的所有元素必须是同一类型的,如果不是,会向下自动转换
  1. 数值计算
import numpy as np
A_array = np.array([[1,2,3],[4,5,6]])
print(A_array)  #输出为:[[1 2 3]
                #       [4 5 6]]
print(np.sum(A_array)) #将数组当中的所有数进行累加,输出为21

#指定要进行的操作沿什么轴
print(np.sum(A_array,axis=0)) #沿竖轴进行累加,输出为:[5 7 9]
print(A_array.ndim) #输出数据的维度,ndim返回的是一个数,输出为 2
print(np.sum(A_array,axis=1)) #沿横轴进行累加,输出为[6 15]

print(A_array.prod())  #数组中所有数进行连乘,输出为 120
print(A_array.prod(axis=0)) #沿竖轴进行连乘,输出为:[ 4 10 18]
print(A_array.prod(axis=1)) #沿横轴进行连乘,输出为:[  6 120]

print(A_array.min()) #输出数组中的最小值,输出为:1
print(A_array.min(axis=0)) #沿竖轴依次得到最小值,输出为:[1 2 3]
print(A_array.min(axis=1)) #沿横轴依次得到最小值,输出为:[1 4]
print(A_array.max()) #输出数组中的最大值,输出为:6

#找到索引位置
print(A_array.argmin()) #最小值的索引位置,输出为:0
print(A_array.argmin(axis=0)) #沿竖轴依次得到最小值的索引位置,输出为:[0 0 0]
print(A_array.argmax(axis=1)) #沿横轴依次得到最大值的索引位置,输出为:[2 2]
print(A_array.argmax()) #数组中最大值的索引位置,输出为:5

print(A_array.mean()) #数组的平均值,输出为:3.5
print(A_array.mean(axis=0)) #沿竖轴依次得到的数组的平均值,输出为:[2.5 3.5 4.5]

#标准差 标准差(Standard Deviation) ,是离均差平方的算术平均数的算术平方根,用σ表示。
print(A_array.std()) #输出为:1.707825127659933
print(A_array.std(axis=1)) #对横轴计算标准差,输出为:[0.81649658 0.81649658]

#方差的计算 方差用来计算每一个变量(观察值)与总体均数之间的差异。
print(A_array.var())  #输出为:2.9166666666666665

#clip函数clip这个函数将将数组中的元素限制在a_min, a_max之间,大于a_max的就使得它等于 a_max,小于a_min,的就使得它等于a_min。
print(A_array.clip(2,4)) #输出为:[[2 2 3]
                                 # [4 4 4]]
A_array = np.array([1.2,3.56,6.41])
print(A_array.round()) #相当于四舍五入,输出为:[1. 4. 6.]
print(A_array.round(decimals=1)) #保留一位小数点,输出为:[1.2 3.6 6.4]

3.排序

import numpy as np
A_array = np.array([[1.5,1.3,7.5],[5.6,7.8,1.2]])
print(A_array) #输出为:[[1.5 1.3 7.5]
                      # [5.6 7.8 1.2]]
print(np.sort(A_array)) #将数组进行排序,输出为:[[1.3 1.5 7.5]
                                               # [1.2 5.6 7.8]]
print(np.sort(A_array,axis=0))# 对竖轴进行排序,输出为:[[1.5 1.3 1.2]
                                                      # [5.6 7.8 7.5]]

#argsort()函数返回的是数组值从小到大的索引值。
print(np.argsort(A_array)) #输出为:[[1 0 2]
                                    # [2 0 1]]
A_array = np.linspace(0,10,10) #在0-10之家随机产生十个数。
print(A_array)
'''
输出为:[0.          1.11111111 2.22222222 3.33333333  4.44444444  5.55555556
  6.66666667  7.77777778  8.88888889 10.        ]

'''

A_array = np.array([[1,0,6],
                       [1,7,0],
                       [2,3,1],
                       [2,4,0]])
print(A_array)
'''
输出为:
[[1 0 6]
 [1 7 0]
 [2 3 1]
 [2 4 0]]
'''
  1. 数组形状
import numpy as np
A_array = np.arange(10)
print(A_array) #输出为:[0 1 2 3 4 5 6 7 8 9]
print(A_array.shape) #输出数据维度,输出为:(10,)
A_array.shape = 2,5  #重新定义数组维度
print(A_array) #输出为:[[0 1 2 3 4]
                       # [5 6 7 8 9]]
print(A_array.reshape(1,10)) #,更改数据维度,输出为:[[0 1 2 3 4 5 6 7 8 9]]
A_array = np.arange(10)
print(A_array.shape) #输出为:(10,)
A_array = A_array[np.newaxis,:] #np.newaxis 在使用和功能上等价于 None,其实就是 None 的一个别名。
print(A_array) #输出为:[[0 1 2 3 4 5 6 7 8 9]]
A_array = A_array[:,np.newaxis]
print(A_array) #输出为:[[[0 1 2 3 4 5 6 7 8 9]]]

A_array = A_array.squeeze() #squeeze 函数:从数组的形状中删除单维度条目,即把shape中为1的维度去掉
print(A_array.shape) #输出为:(10,)

A_array.shape = 2,5
print(A_array) #输出为:[[0 1 2 3 4]
                       # [5 6 7 8 9]]
print(A_array.T) #转置
'''
输出为:[[0 5]
 [1 6]
 [2 7]
 [3 8]
 [4 9]]'''
 
#数组的连接
a = np.array([[123,456,678],[3214,456,134]])
print(a) #输出为:[[ 123  456  678]
                # [3214  456  134]]
                
b = np.array([[1235,3214,432],[43,13,134]])
print(b) #输出为:[[1235 3214  432]
                # [  43   13  134]]
                
c = np.concatenate((a,b)) #可理解为上下相连
print(c) 
'''
输出为:
[[ 123  456  678]
 [3214  456  134]
 [1235 3214  432]
 [  43   13  134]]
 '''
 
c = np.concatenate((a,b),axis=0) #竖连
print(c) 
'''
输出为:
[[ 123  456  678]
 [3214  456  134]
 [1235 3214  432]
 [  43   13  134]]
'''

c = np.concatenate((a,b),axis=1) #横连
print(c)
'''
输出为:
[[ 123  456  678 1235 3214  432]
 [3214  456  134   43   13  134]]
'''

print(c.shape) #输出为:(2, 6)
print(np.vstack((a,b))) #相等于竖连
'''
输出为:
[[ 123  456  678]
 [3214  456  134]
 [1235 3214  432]
 [  43   13  134]]
'''
print(np.hstack((a,b))) #相当于横连
'''
输出为:
[[ 123  456  678 1235 3214  432]
 [3214  456  134   43   13  134]]
'''
print(a) #输出a数组
'''
输出为:
[[ 123  456  678]
 [3214  456  134]]
'''
print(a.flatten()) #这个相当于压平,压成只有一行
'''
输出为:[ 123  456  678 3214  456  134]
'''

5.数组生成

import numpy as np
print(np.array([1,2,3])) #输出[1 2 3]

#构造出来一个数组
print(np.arange(10)) #输出为:[0 1 2 3 4 5 6 7 8 9]
print(np.arange(2,20,2)) #输出为:[ 2  4  6  8 10 12 14 16 18]
print(np.arange(2,20,2,dtype=np.float32)) #输出为:[ 2.  4.  6.  8. 10. 12. 14. 16. 18.]

#默认是10为底的,开始点和结束点是10的幂
print(np.logspace(0,1,5)) #[ 1.          1.77827941  3.16227766  5.62341325 10.        ]
x = np.linspace(-10,10,5) 
print(x) #输出为:[-10.  -5.   0.   5.  10.]
y = np.linspace(-10,10,5) 
print(y)  #输出为:[-10.  -5.   0.   5.  10.]

#更常用的zeros ones,零矩阵,1矩阵
print(np.zeros(3)) #输出为:[0. 0. 0.]
print(np.zeros((3,3)))
'''
输出为:
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
'''

print(np.ones((3,3)))
'''
输出为:
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
'''
print(np.ones((3,3),dtype=np.float32))
'''
输出为:
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
'''
a = np.empty(6)
print(a.shape) #输出为:(6,)
print(a) 
'''
输出为:[4.45032173e-308 7.56599807e-307 9.34605037e-307 2.33638188e-307
 1.33511562e-306 1.37959129e-306]'''
a.fill(1) #用1填充
print(a) #输出为:[1. 1. 1. 1. 1. 1.]

A_array = np.array([1,2,3,4])
print(A_array) #输出为:[1 2 3 4]
print(np.zeros_like(A_array)) #输出为:[0 0 0 0]
print(np.ones_like(A_array)) #输出为:[1 1 1 1]
print(np.identity(5)) #初等矩阵
'''
输出为:
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]
'''

6.运算

import numpy as np
x = np.array([5,5])
y = np.array([2,2])
z = np.multiply(x,y) #矩阵相乘
print(z) #输出为:[10 10]

#一维的时候是内积运算
print(np.dot(x,y)) #输出为:20
print(x.shape) #输出为:(2,)
print(y.shape) #输出为:(2,)
x.shape = 2,1 #改变维度
print(x) 
'''
输出为:
[[5]
 [5]]
'''
y.shape = 1,2
print(y)  #输出为:[[2 2]]

#二维的时候就是矩阵运算
print(x.shape) #输出为:(2, 1)
print(y.shape) #输出为:(1, 2)
print(np.dot(x,y)) 
'''
输出为:
[[10 10]
 [10 10]]
'''
print(np.dot(y,x)) #输出为:[[20]]
x = np.array([1,1,1])
y = np.array([[1,2,3],[4,5,6]])
print(x*y)
'''
输出为:
[[1 2 3]
 [4 5 6]]
'''

x = np.array([1,1,1,4])
y = np.array([1,1,1,2])
print(x == y) #输出为:[ True  True  True False]
print(np.logical_and(x,y)) #逻辑与:输出为:[ True  True  True  True]
print(np.logical_or(x,y)) #逻辑或,输出为:[ True  True  True  True]
print(np.logical_not(x,y)) #逻辑非,输出为:[0 0 0 0]

7.随机模块

import numpy as np
print(np.random.rand(3,2)) #随机产生三行两列的数组
'''
输出为:
[[0.87465244 0.0233479 ]
 [0.78814546 0.68005351]
 [0.69842302 0.79313718]]
'''
print(np.random.randint(10,size=(5,4))) #生成五行四列的整数数组,且最大值不超过10
'''
输出为:
[[5 4 0 4]
 [8 0 8 4]
 [5 4 8 2]
 [6 4 3 1]
 [0 7 0 0]]
'''
print(np.random.rand()) #随机产生一个数,输出为:0.27569349234690677
print(np.random.random_sample()) #随机产生一个数,输出为:0.5537785049328294
print(np.random.randint(0,10,3)) #随机产生三个数,范围为0-10,输出为:[7 0 7]
mu,sigma = 0,0.1
print(np.random.normal(mu,sigma,10)) #生成高斯分布的概率密度随机数
'''
输出为:
[ 0.01216144 -0.09703099  0.07929835 -0.13699182 -0.06279411  0.00292478
 -0.02031631  0.16823106 -0.05076774 -0.08562122]
'''
np.set_printoptions(precision=2) #设置精度为2
int(np.random.normal(mu,sigma,10))
'''
输出为:
[-0.03 -0.11  0.05 -0.05  0.2  -0.06  0.03  0.08 -0.15  0.02]

'''

8.读写

import numpy as np
f = open('A.txt','w') #打开文件,'w'表示写
f.write('1 2 3 4 5') #写进数字
f.write('\n') #回车换行
f.write('6 7 8 9 10')
f.close()#文件关闭,打开一个文件记得一定要关闭,这样一个文件就写好了

data = []
with open('A.txt') as f:
    for line in f.readlines(): #逐行读文件
        fileds = line.split() #切割符
        cur_data = [float(x) for x in fileds] #将整数转化为浮点数
        data.append(cur_data) #加入到data列表中
data = np.array(data) #转化为数组
print(data)
'''
输出为:
[[ 1.  2.  3.  4.  5.]
 [ 6.  7.  8.  9. 10.]]
'''

data = np.loadtxt('A.txt')#读取数据
print(data)
'''
输出为:
[[ 1.  2.  3.  4.  5.]
 [ 6.  7.  8.  9. 10.]]
'''

data = np.loadtxt('A.txt',delimiter=' ') #指定读取文件中数据的分割符
print(data)
'''
输出为:
[[ 1.  2.  3.  4.  5.]
 [ 6.  7.  8.  9. 10.]]
'''
data = np.loadtxt('A.txt',delimiter=' ',skiprows=1)
print(data)
'''
输出为:
[ 6.  7.  8.  9. 10.]
'''
#skiprows:去掉几行
#delimiter=',':分割符
#usecols=(0,1,4):指定使用那几列

A_array = np.array([[1,2,3],[4,5,6]])
np.savetxt('A2.txt',A_array) #保存数据
np.savetxt('A2.txt',A_array,fmt='%d') #保存数据为整数
np.savetxt('tang2.txt',A_array,fmt='%d',delimiter=',')#分割符为','
np.savetxt('tang2.txt',A_array,fmt='%.2f',delimiter=',')#保留两位小数

#读写array结构
A_array = np.array([[1,2,3],[4,5,6]])
np.save('A_array.npy',tang_array)
 A= np.load('A_array.npy') #获取数据
print(A)#[[1 2 3]
        # [4 5 6]]
A_array2 = np.arange(10)
print(A_array2)#输出为:[0 1 2 3 4 5 6 7 8 9]

np.savez('A.npz',a = A_array,b = A_array2)
data = np.load('A.npz')
print(data['a']) #输出为:[[1 2 3]
                  #        [4 5 6]]
print(data['b']) #输出为:[0 1 2 3 4 5 6 7 8 9]
92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元   为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。       从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。    本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。   二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。   三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。   四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。   五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页