栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python第三方库之numpy库基本用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python第三方库之numpy库基本用法

1.numpy介绍

在我们学习数学建模和机器学习过程中难免要用到数据处理,而python的matplotlib+numpy+pandas是我们必须要学习的库,此文章介绍了numpy库的各种基本函数及用法,并帮大家区分了矩阵运算分割合并函数中何时axis=0,axis=1。

2.numpy属性
import numpy as np
array=np.array([           #( )
    [1,2,3],                #,
    [4,5,6],                #,
    [7,8,9]
])
print(array)
print('------------------')

print('shape',array.shape) #几行几列
print('------------------')

print('size',array.size)   #几个元素
print('------------------')

print('dimination',array.ndim)#几维

输出 

[[1 2 3]
 [4 5 6]
 [7 8 9]]
------------------
shape (3, 3)
------------------
size 9
------------------
dimination 2

3.创建array
import numpy as np
a=np.array([1,2,3],dtype=np.int)  #float
print(a.dtype)   #a.dtype
print('------------------')

b=np.zeros((2,2))    # 0 0
print(b)             # 0 0 
print('------------------')

c=np.ones((2,2))     # 1 1
print(c)             # 1 1
print('------------------')

d=np.arange(1,10,2)  #2 步长  1-9数字
print(d)
print('------------------')

e=np.arange(10)      #0-9
print(e)
print('------------------')

e=np.arange(10).reshape(2,5) #reshape     2 行  5 列
print(e)
print('------------------')

f=np.linspace(1,10,6).reshape(2,3) #5 分成5段  2 行  3 列
print(f)

输出 

int32
------------------
[[0. 0.]
 [0. 0.]]
------------------
[[1. 1.]
 [1. 1.]]
------------------
[1 3 5 7 9]
------------------
[0 1 2 3 4 5 6 7 8 9]
------------------
[[0 1 2 3 4]
 [5 6 7 8 9]]
------------------
[[ 1.   2.8  4.6]
 [ 6.4  8.2 10. ]]

4.numpy运算
import numpy as np
a=np.array([1,2,3])
b=np.arange(4,7)
print(a<2)
print('------------------')

c=a+b
print(c)
print('------------------')

array1=np.array([          # ( )
    [1,2,3],                #,
    [4,5,6],                #,
    [7,8,9]
])
array2=np.array([          # ( )
    [3,2,4],                #,
    [6,3,6],                #,
    [1,1,9]
])
d=array1*array2                              #矩阵对应数字相乘
e=np.dot(array1,array2)                      #矩阵乘法运算=array1.dot(array2)
print(d)  
print('------------------')
print(e)  
print('------------------')

arr=np.random.random((3,3))
print(arr)
print('------------------')

print(np.sum(arr))
print('------------------')
print(np.sum(arr,axis=0))#矩阵元素求和  axis=0 列求和 axis=1 行求和
print('------------------')

print(np.min(arr))
print('------------------')
print(np.max(arr))

输出

[ True False False]
------------------
[5 7 9]
------------------
[[ 3  4 12]
 [24 15 36]
 [ 7  8 81]]
------------------
[[ 18  11  43]
 [ 48  29 100]
 [ 78  47 157]]
------------------
[[0.36238839 0.26379906 0.51847205]
 [0.14332761 0.93624511 0.97194773]
 [0.27334051 0.25652996 0.71679545]]
------------------
4.442845873602402
------------------
[0.77905651 1.45657414 2.20721523]
------------------
0.14332761426743845
------------------
0.9719477294646877
import numpy as np
a=np.arange(1,7).reshape(2,3)
print(a)
print('------------------')

print(np.argmin(a))#矩阵中最小值的索引 第0号
print('------------------')

print(np.argmax(a))#矩阵中最大值的索引 第5号
print('------------------')

print(np.average(a))#平均值
print('------------------')

print(np.average(a,axis=1))#行平均值
print('------------------')

print(np.median(a))#中位数
print('------------------')

print(np.cumsum(a))#+cumulate sum
print('------------------')

print(np.diff(a))  #-
print('------------------')

print(np.sort(a))#每一行从小到大排序
print('------------------')

print(np.transpose(a))#print(a.T)转置矩阵
print('------------------')

print((a.T).dot(a)) 
print('------------------')

print(np.clip(a,2,5)) #小于2的数变为2,大于5的数变为5
print('------------------')

e=np.concatenate((a,a,a),axis=1)#axis=1行合并
print(e)
print('------------------')

e=np.concatenate((a,a,a),axis=0)#axis=0列合并
print(e)

输出

[[1 2 3]
 [4 5 6]]
------------------
0
------------------
5
------------------
3.5
------------------
[2. 5.]
------------------
3.5
------------------
[ 1  3  6 10 15 21]
------------------
[[1 1]
 [1 1]]
------------------
[[1 2 3]
 [4 5 6]]
------------------
[[1 4]
 [2 5]
 [3 6]]
------------------
[[17 22 27]
 [22 29 36]
 [27 36 45]]
------------------
[[2 2 3]
 [4 5 5]]
------------------
[[1 2 3 1 2 3 1 2 3]
 [4 5 6 4 5 6 4 5 6]]
------------------
[[1 2 3]
 [4 5 6]
 [1 2 3]
 [4 5 6]
 [1 2 3]
 [4 5 6]]

5.numpy索引
import numpy as np
a=np.arange(1,7).reshape(2,3)
print(a)
print('------------------')

print(a[1][1])#print(a[1,1])
print('------------------')

print(a[1][1:])#1-3 1:3
print('------------------')

for row in a:#每一行迭代
    print(row)
print('------------------')

for row in a.T:#每一列迭代
    print(row)
print('------------------')

print(a.flatten()) #变为一维
print('------------------')

for item in a.flat:#逐个输出
    print(item)

 输出

[[1 2 3]
 [4 5 6]]
------------------
5
------------------
[5 6]
------------------
[1 2 3]
[4 5 6]
------------------
[1 4]
[2 5]
[3 6]
------------------
[1 2 3 4 5 6]
------------------
1
2
3
4
5
6

6.array合并
import numpy as np
a=np.array([1,2,3])
b=np.array([4,5,6])
c=np.vstack((a,b,a)) #vertical stack
print(c)
print('------------------')

d=np.hstack((a,b)) #horizonal stack
print(d)
print('------------------')

print(a.T)#一维数组无法转置
e=np.concatenate((a,b,a,a),axis=0)#   axis=1行合并  axis=0列合并
print(e)
print('------------------')

a=np.array([1,2,3])[np.newaxis,:]#增加行维度变成矩阵 /[:,np.newaxis]
print(a.T)#reshape也行。。

输出

[[1 2 3]
 [4 5 6]
 [1 2 3]]
------------------
[1 2 3 4 5 6]
------------------
[1 2 3]
[1 2 3 4 5 6 1 2 3 1 2 3]
------------------
[[1]
 [2]
 [3]]

7.array分割
import numpy as np
a=np.arange(1,13).reshape(3,4)
print(a)

print('-------------------------------------------------------------------------------')
print(np.vsplit(a,3))#vsplit 对列进行切割 列是竖着的 要用刀切也是横着切,所以有了1234这一行
print('-------------------------------------------------------------------------------')
print(np.split(a,3,axis=0))#axis=0,对列进行分割 列是竖着的 要用刀切也是横着切
print('-------------------------------------------------------------------------------')
print(np.array_split(a,3,axis=0))#axis=0,对列进行分割 不均等分割

print('-------------------------------------------------------------------------------')
print(np.hsplit(a,4))#vsplit 对行进行切割 行是横着的 要用刀切也是竖着切
print('-------------------------------------------------------------------------------')
print(np.split(a,4,axis=1))#axis=1,对行进行分割 行是横着的 要用刀切也是竖着切
print('-------------------------------------------------------------------------------')
print(np.array_split(a,3,axis=1))#axis=1,对行进行分割 不均等分割

输出

[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
-------------------------------------------------------------------------------
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]]), array([[ 9, 10, 11, 12]])]
-------------------------------------------------------------------------------
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]]), array([[ 9, 10, 11, 12]])]
-------------------------------------------------------------------------------
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]]), array([[ 9, 10, 11, 12]])]
-------------------------------------------------------------------------------
[array([[1],
       [5],
       [9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]]), array([[ 4],
       [ 8],
       [12]])]
-------------------------------------------------------------------------------
[array([[1],
       [5],
       [9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]]), array([[ 4],
       [ 8],
       [12]])]
-------------------------------------------------------------------------------
[array([[ 1,  2],
       [ 5,  6],
       [ 9, 10]]), array([[ 3],
       [ 7],
       [11]]), array([[ 4],
       [ 8],
       [12]])]

8.拷贝与复值
import numpy as np
a=np.array([1,2,3])
b=np.array([4,5,6])
a=b#地址与值都相同
print(a,b)
b=a.copy()#只把值复制过来,地址并不相同

输出

[4 5 6] [4 5 6]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997182.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号