Python基础学习之 -Numpy学习-1

在Python编程中用于科学计算,Numpy是一个Python库/模块

Numpy模块提供一个ndarray对象,我们可以用这个对象来对任意维度的数组执行操作。ndarray代表N维数组,其中N是任意数字。这意味着Numpy数组可以是任意维度的数组。

1.强大的N维数组对象Array;

  2.成熟的函数库;

  3.实用的线性代数、傅里叶变换和随机数生成函数。

 

目录

numpy下载与安装

Numpy使用

  1. 创建数组
  2. 二维数组
  3. 数组间加减都是对应计算
  4. 逻辑判断
  5. reshape 定义多行列矩阵
  6. 矩阵相乘 dot()方法
  7. 最大最小和
  8. axis代表维度 0代表列 1代表行
  9. 基础计算
  10. numpy 按下标取值
  11. 合并
  12. 分割 

 

 

numpy下载与安装

 

 

 

 

 

Anaconda安装完毕后,输入condalist查看都有哪些库,因为一般初次安装的包都比较老,为避免报错,更新所有的包condaupdate–all。Anaconda一般自带numpy等一些库,直接可以拿来使用。

Numpy使用

  1. 创建数组

import numpy as np
a=np.array([2,23,4],dtype=np.int)
print(a.dtype)#dtype表示数据类型
print(a)
int32
[ 2 23  4]

二维数组

import numpy as np
a=np.array([[2,23,4],[2,32,4]])
print(a)

[[ 2 23  4]
 [ 2 32  4]]

数组间加减都是对应计算

import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3
print(a,b)
c=a-b
print(c)

[10 20 30 40] [0 1 2 3]
[10 19 28 37]


import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3
print(a,b)
c=b**2#b的平方
print(c)

[10 20 30 40] [0 1 2 3]
[0 1 4 9]


import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3
c=10*np.sin(a)
d=10*np.cos(a)
print(c)
print(d)

[-5.44021111  9.12945251 -9.88031624  7.4511316 ]
[-8.39071529  4.08082062  1.5425145  -6.66938062]

逻辑判断

import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3

print(b)
print(b<3)#数组中小于3就True 反之False

[0 1 2 3]
[ True  True  True False]



import numpy as np
a=np.array([10,20,30,40])
b=np.arange(4)#0,1,2,3

print(b)
print(b==3)#数组中等于3就True 反之False

[0 1 2 3]
[False False False  True]

reshape 定义多行列矩阵

import numpy as np
a=np.array([[1,1],[0,1]])
b=np.arange(4).reshape((2,2))# reshape 定义二行二列矩阵
print(a)
print(b)

[[1 1]
 [0 1]]
[[0 1]
 [2 3]]



矩阵相乘 dot()方法

import numpy as np
a=np.array([[1,1],[0,1]])
b=np.arange(4).reshape((2,2))# reshape 定义二行二列矩阵
c=a*b#逐个相乘
c_dot=np.dot(a,b)#矩阵相乘  行 * 列
c_dot2=a.dot(b)#与上行一样
print(a)
print(b)
print(c)
print(c_dot)
print(c_dot2)


[[1 1]
 [0 1]]
[[0 1]
 [2 3]]
[[0 1]
 [0 3]]
[[2 4]
 [2 3]]
[[2 4]
 [2 3]]

最大最小和

import numpy as np
a=np.random.random((2,4))

print(a)
print(np.sum(a))
print(np.min(a))
print(np.max(a))

[[0.01148256 0.89207744 0.47739733 0.02236821]
 [0.1514486  0.60197205 0.09927852 0.761249  ]]
3.0172737106277885
0.011482556279377998
0.8920774400156976

axis代表维度 0代表列 1代表行

import numpy as np
a=np.random.random((2,4))

print(a)
print(np.sum(a,axis=1))#axis代表维度 0代表列 1代表行
print(np.min(a,axis=0))
print(np.max(a,axis=1))


[[0.88854865 0.01832797 0.00808952 0.21917744]
 [0.22957855 0.24251115 0.78180795 0.53827674]]
[1.13414359 1.79217439]
[0.22957855 0.01832797 0.00808952 0.21917744]
[0.88854865 0.78180795]

基础计算

#numpy 基础计算
import numpy as np
a=np.arange(2,14).reshape((3,4))

print(a)
print(np.argmin(a))#最小值索引
print(np.argmax(a))#最大值索引
print(np.mean(a))#平均值
print(np.average(a))#平均值
print(np.median(a))#中位数
print(np.cumsum(a))#累加
print(np.diff(a))#累差
print(np.nonzero(a))#找出非0的数
print(np.sort(a))#逐行排序,默认升序

[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]
0
11
7.5
7.5
7.5
[ 2  5  9 14 20 27 35 44 54 65 77 90]
[[1 1 1]
 [1 1 1]
 [1 1 1]]
(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64))
[[ 2  3  4  5]
 [ 6  7  8  9]
 [10 11 12 13]]


numpy 按下标取值


#numpy 基础计算
import numpy as np
a=np.arange(3,15).reshape((3,4))
print(a)
print(a[2][1])
print(a[2,1])

[[ 3  4  5  6]
 [ 7  8  9 10]
 [11 12 13 14]]
12
12
[ 4  8 12]
[8 9]

合并

#numpy 基础计算
import numpy as np
a=np.array([1,1,1])
b=np.array([2,2,2])

c=np.vstack((a,b))#上下合并
d=np.hstack((a,b))#左右合并
print(c)
print(d)
print(a.shape,c.shape,d.shape)


[[1 1 1]
 [2 2 2]]
[1 1 1 2 2 2]
(3,) (2, 3) (6,)



#numpy 基础计算
import numpy as np
a=np.array([1,1,1])
b=np.array([2,2,2])

c=np.vstack((a,b))#上下合并
d=np.hstack((a,b))#左右合并
print(d)
print(a.shape,d.shape)
print(a[:,np.newaxis])#改变维度 纵向
print(a[np.newaxis:,])#改变维度 横向

[1 1 1 2 2 2]
(3,) (6,)
[[1]
 [1]
 [1]]
[1 1 1]



分割 

注意 这个纵向分割的意思是纵向的垂直轴方向,意思就是按行分割的。横向分割就是横向的垂直轴方向么 按列分割

#numpy 分割
import numpy as np
a=np.arange(12).reshape((3,4))
print(a)
print(np.array_split(a,3,axis=1))


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


#numpy 分割
import numpy as np
a=np.arange(12).reshape((3,4))
print(a)
print(np.vsplit(a,3))#纵向分割
print(np.hsplit(a,2))#横向分割
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
[array([[0, 1],
       [4, 5],
       [8, 9]]), array([[ 2,  3],
       [ 6,  7],
       [10, 11]])]


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值