numpy学习

python 复制代码
import numpy as np
python 复制代码
## 创建一个一维数组
np.array([1,2,3])
复制代码
array([1, 2, 3])
python 复制代码
np.array([1,2,3])
复制代码
array([1, 2, 3])
python 复制代码
np.array([[1,2,3]])
复制代码
array([[1, 2, 3]])
python 复制代码
np.array([[1,2,3]]).T
复制代码
array([[1],
       [2],
       [3]])
python 复制代码
np.ones(4)
复制代码
array([1., 1., 1., 1.])
python 复制代码
np.zeros(4)
复制代码
array([0., 0., 0., 0.])
python 复制代码
np.random.random(3)
复制代码
array([0.76998129, 0.65607576, 0.23038928])

常见错误

1.保留中括号

python 复制代码
a = np.array([[1,2,3]])
a.dtype
复制代码
dtype('int32')
python 复制代码
a = np.array([[1.,2,3]])
a.dtype
复制代码
dtype('float64')
python 复制代码
a = np.array([[1,2,'3']])
a.dtype
复制代码
dtype('<U11')

常用的api

python 复制代码
## 创建一个数组1-10
np.arange(1,11)
复制代码
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
python 复制代码
np.arange(-2,2,0.5)# 0.5是步长
复制代码
array([-2. , -1.5, -1. , -0.5,  0. ,  0.5,  1. ,  1.5])
python 复制代码
## 把数据切割几段
np.linspace(0,2,5)
复制代码
array([0. , 0.5, 1. , 1.5, 2. ])
python 复制代码
np.linspace(0,100,10)
复制代码
array([  0.        ,  11.11111111,  22.22222222,  33.33333333,
        44.44444444,  55.55555556,  66.66666667,  77.77777778,
        88.88888889, 100.        ])
python 复制代码
## 创建高维度数组
python 复制代码
np.ones([2,3])
复制代码
array([[1., 1., 1.],
       [1., 1., 1.]])
python 复制代码
np.zeros([3,3])
复制代码
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

创建对角矩阵

python 复制代码
a =np.eye(3)
python 复制代码
b = np.array([1,2,3])
python 复制代码
np.dot(a,b)
复制代码
array([1., 2., 3.])
python 复制代码
c = np.array([4,5,6])
python 复制代码
np.diag(c)
复制代码
array([[4, 0, 0],
       [0, 5, 0],
       [0, 0, 6]])
numpy数组的属性
python 复制代码
c = np.array([1,2,3,4])
c.ndim
复制代码
1
  • 数组的形状
python 复制代码
 a= np.array([
     [2,3,4],
     [1,3,7]
 ])
python 复制代码
a.shape
复制代码
(2, 3)
python 复制代码
a.size #数量
复制代码
6
python 复制代码
a.dtype
复制代码
dtype('int32')

数组的运算

python 复制代码
data = np.array([1,2])
ones = np.ones(2)
python 复制代码
data
复制代码
array([1, 2])
python 复制代码
ones
复制代码
array([1., 1.])
python 复制代码
data+ones
复制代码
array([2., 3.])
python 复制代码
data - ones
复制代码
array([0., 1.])
python 复制代码
data * ones
复制代码
array([1., 2.])
python 复制代码
data/ones
复制代码
array([1., 2.])
python 复制代码
data * 3
复制代码
array([3, 6])
python 复制代码
data ** 2
复制代码
array([1, 4], dtype=int32)
python 复制代码
np.sin(data)
复制代码
array([0.84147098, 0.90929743])
python 复制代码
np.exp(data)
复制代码
array([2.71828183, 7.3890561 ])
python 复制代码
np.sqrt(data)
复制代码
array([1.        , 1.41421356])

布尔过滤

python 复制代码
a = np.array([168,159,165,178,190])
python 复制代码
a >=175
复制代码
array([False, False, False,  True,  True])
python 复制代码
a = [10,20,30,40]
python 复制代码
a * 2
复制代码
[10, 20, 30, 40, 10, 20, 30, 40]

索引入门

python 复制代码
a = np.array([1,2,3])
python 复制代码
a[1]
复制代码
2
python 复制代码
#索引范围
a[0:2]
复制代码
array([1, 2])
python 复制代码
a[1:30]
复制代码
array([2, 3])
python 复制代码
a[1:]
复制代码
array([2, 3])
python 复制代码
a[:5]
复制代码
array([1, 2, 3])
python 复制代码
a[:]
复制代码
array([1, 2, 3])
python 复制代码
a[-1]
复制代码
3
python 复制代码
a[-3:-1]
复制代码
array([1, 2])

numpy数组的元素操作

python 复制代码
data = np.array([1,2,3,4,5,6,7,8,9,8,7,6,5,4])
python 复制代码
data.max()
复制代码
9
python 复制代码
data.min()
复制代码
1
python 复制代码
data.sum()
复制代码
75
python 复制代码
data.mean() #求平均值
复制代码
5.357142857142857

二位数组切片

python 复制代码
data = np.array([
    [1,2],
    [3,4],
    [5,6]
])
python 复制代码
data
复制代码
array([[1, 2],
       [3, 4],
       [5, 6]])
python 复制代码
data[0][1]
复制代码
2
python 复制代码
data[0,1]
复制代码
2
python 复制代码
data[1:3]
复制代码
array([[3, 4],
       [5, 6]])
python 复制代码
data[0:2,0:1]
复制代码
array([[1],
       [3]])

numpy 数据形状的改变

python 复制代码
data= np.array([1,2,3,4,5,6])
python 复制代码
data.shape
复制代码
(6,)
python 复制代码
data.reshape(2,3)
复制代码
array([[1, 2, 3],
       [4, 5, 6]])
python 复制代码
data.reshape(3,2)
## 注意行乘以列等于数据的总量
复制代码
array([[1, 2],
       [3, 4],
       [5, 6]])
python 复制代码
data.reshape(3,-1)
复制代码
array([[1, 2],
       [3, 4],
       [5, 6]])

数据降维

python 复制代码
c = np.array([
    [1,2,3],
    [2,3,4]
])
python 复制代码
c.ravel()
复制代码
array([1, 2, 3, 2, 3, 4])
python 复制代码
a = np.array([
[3000,3500],
[4500,5000],
[10000,11000]]
)
python 复制代码
np.sum(a)
复制代码
37000
python 复制代码
np.sum(a,axis=0)
复制代码
array([17500, 19500])
python 复制代码
np.sum(a,axis=1)
复制代码
array([ 6500,  9500, 21000])
python 复制代码
np.max(a)
复制代码
11000
python 复制代码
np.min(a)
复制代码
3000
python 复制代码
np.mean(a)
复制代码
6166.666666666667
python 复制代码
np.median(a)
复制代码
4750.0

方差

python 复制代码
np.var(a)
复制代码
9888888.888888888

标准差

python 复制代码
np.std(a)
复制代码
3144.660377352201

随机数

python 复制代码
np.random.rand(2,3)
复制代码
array([[0.14406139, 0.58255917, 0.56687269],
       [0.45931544, 0.27684285, 0.53764072]])
python 复制代码
np.random.randint(2,6,5)
复制代码
array([2, 3, 2, 4, 5])
python 复制代码
np.random.randn(10)
复制代码
array([ 0.13193888,  0.09997268, -0.071677  , -0.08255967, -0.4487725 ,
       -1.75318345, -0.46725208,  0.34519292, -0.30273565, -0.58354462])

创建正太分布规律的数据

python 复制代码
np.random.normal(175,15,size=(4,4))
复制代码
array([[190.6869503 , 162.3662239 , 155.35991852, 185.87871385],
       [179.38113865, 171.48428447, 179.59261062, 169.09543353],
       [166.4724072 , 185.78899473, 168.35652325, 163.75069691],
       [164.24513277, 186.98536138, 164.74146814, 176.38007905]])
python 复制代码
np.random.randn(4,4)
复制代码
array([[-3.08839751e-01,  7.66951959e-01, -4.02554299e-01,
         6.24276206e-01],
       [-6.56442394e-01, -5.90405577e-01, -2.12262531e+00,
        -2.38134835e-01],
       [-2.17110459e-01, -6.00174700e-01,  1.06536890e-01,
         1.70518271e+00],
       [ 2.33097080e-01, -4.03758442e-01,  2.64799870e-01,
         6.67566195e-04]])
python 复制代码
np.average(np.random.randn(400,400))
复制代码
-0.005990795466101744
python 复制代码
np.std(np.random.randn(400,400))
复制代码
1.0005126387054453

numpy数据打散

python 复制代码
a = np.arange(10)
a
复制代码
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
python 复制代码
np.random.permutation(a)
复制代码
array([6, 1, 7, 5, 9, 4, 2, 3, 8, 0])
python 复制代码
a
复制代码
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

直接修改原始数组

python 复制代码
np.random.shuffle(a)
python 复制代码
a
复制代码
array([2, 0, 9, 1, 7, 6, 4, 3, 8, 5])

numpy指定随机数种子

python 复制代码
np.random.seed(3)
np.random.randint(24)
复制代码
10

numpy逻辑操作

python 复制代码
a = np.array([True,False,True,True,False])
python 复制代码
np.all(a)
复制代码
False
python 复制代码
np.any(a)
复制代码
True
python 复制代码
a = np.array([50,55,65,57,58,66,100])
a >19
复制代码
array([ True,  True,  True,  True,  True,  True,  True])

numpy数据排序

python 复制代码
b = np.random.randn(10)
b
复制代码
array([ 0.87226552, -0.01554175,  1.16668206, -2.15861048,  0.75620445,
       -1.69049879, -0.34879409, -1.72951471,  0.69631161,  0.56496171])
python 复制代码
b.sort()
python 复制代码
b
复制代码
array([-2.15861048, -1.72951471, -1.69049879, -0.34879409, -0.01554175,
        0.56496171,  0.69631161,  0.75620445,  0.87226552,  1.16668206])

不修改元素族排序

python 复制代码
a = np.random.randn(10)
python 复制代码
a
复制代码
array([ 0.47986141, -0.29594453, -0.42030926, -0.85961379, -0.40791451,
        1.24757841, -1.82938368, -1.59651767,  0.69031204,  0.92812246])
python 复制代码
a.argsort()
复制代码
array([6, 7, 3, 2, 4, 1, 0, 8, 9, 5], dtype=int64)
python 复制代码
a
复制代码
array([ 0.47986141, -0.29594453, -0.42030926, -0.85961379, -0.40791451,
        1.24757841, -1.82938368, -1.59651767,  0.69031204,  0.92812246])
python 复制代码
a[a.argsort()]
复制代码
array([-1.82938368, -1.59651767, -0.85961379, -0.42030926, -0.40791451,
       -0.29594453,  0.47986141,  0.69031204,  0.92812246,  1.24757841])

二维数组

python 复制代码
b = np.random.randn(3,3)
python 复制代码
b
复制代码
array([[ 1.58653631,  0.40130586, -1.26968864],
       [ 0.46920629,  1.30385884,  1.23128365],
       [ 0.22948181,  0.27360762, -0.666784  ]])
python 复制代码
b.sort(axis=1)
python 复制代码
b
复制代码
array([[-1.26968864,  0.40130586,  1.58653631],
       [ 0.46920629,  1.23128365,  1.30385884],
       [-0.666784  ,  0.22948181,  0.27360762]])
python 复制代码
b.sort(axis=0)
python 复制代码
b
复制代码
array([[-1.26968864,  0.22948181,  0.27360762],
       [-0.666784  ,  0.40130586,  1.30385884],
       [ 0.46920629,  1.23128365,  1.58653631]])
python 复制代码
b.argsort(axis=1)
复制代码
array([[1, 0],
       [1, 0],
       [1, 0],
       ...,
       [1, 0],
       [0, 1],
       [1, 0]], dtype=int64)
python 复制代码
np.set_printoptions(suppress=True)
totalpoint = 1000
b = np.random.rand(totalpoint,2)
b
复制代码
array([[0.03393228, 0.16615602],
       [0.07044839, 0.25010443],
       [0.37316487, 0.33790676],
       ...,
       [0.2200427 , 0.60226645],
       [0.04297848, 0.38231248],
       [0.45174169, 0.16641803]])
python 复制代码
c = np.sqrt(np.sum(b**2,axis=1))
c
复制代码
array([0.73849201, 0.78324931, 0.2300633 , ..., 0.77652285, 0.78353274,
       0.62629663])
python 复制代码
c < 1
复制代码
array([ True,  True,  True, ..., False,  True,  True])
python 复制代码
np.sum(c<=1)
复制代码
785401387

行向量和列向量

python 复制代码
a = np.array([1,2,3])
python 复制代码
a
复制代码
array([1, 2, 3])
python 复制代码
a.transpose()
复制代码
array([1, 2, 3])

ID数组(一维数组)

python 复制代码
b = np.arange(10)
python 复制代码
b
复制代码
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
python 复制代码
b[::2]
复制代码
array([0, 2, 4, 6, 8])

数组倒序排列

python 复制代码
b
复制代码
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

b[::-1]

2D(二位数组)

python 复制代码
a = np.array([
    [1,2],
    [3,4],
    [5,6]
])
a
复制代码
array([[1, 2],
       [3, 4],
       [5, 6]])
python 复制代码
a[1,1]
复制代码
4
python 复制代码
data = np.arange(25).reshape(5,5)
data
复制代码
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
python 复制代码
data[1,2:4]
复制代码
array([7, 8])
python 复制代码
data[3:,3:]
复制代码
array([[18, 19],
       [23, 24]])
python 复制代码
data[::2,2::2]
复制代码
array([[ 2,  4],
       [12, 14],
       [22, 24]])
python 复制代码
data[:,1:2]
复制代码
array([[ 1],
       [ 6],
       [11],
       [16],
       [21]])
python 复制代码
data[[0,2,4],[0,2,4]]
复制代码
array([ 0, 12, 24])
python 复制代码
data[[1,3,4],3:]
复制代码
array([[ 8,  9],
       [18, 19],
       [23, 24]])

数组拆分和合并

python 复制代码
data = np.arange(9).reshape(3,3)
data
复制代码
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
python 复制代码
np.vsplit(data,3)
复制代码
[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]
python 复制代码
np.hsplit(data,3)
复制代码
[array([[0],
        [3],
        [6]]),
 array([[1],
        [4],
        [7]]),
 array([[2],
        [5],
        [8]])]

数组的合并

python 复制代码
a = np.array([
    [1,2],
    [3,4]
])
b = np.array([
    [7,8],
    [9,10]
])
python 复制代码
np.vstack((a,b))
复制代码
array([[ 1,  2],
       [ 3,  4],
       [ 7,  8],
       [ 9, 10]])
python 复制代码
np.hstack((a,b))
复制代码
array([[ 1,  2,  7,  8],
       [ 3,  4,  9, 10]])

numpy 高级操作,索引数组

python 复制代码
b = np.array([1,3,5,2,4,6])
python 复制代码
b[np.argsort(b)]
复制代码
array([1, 2, 3, 4, 5, 6])
python 复制代码
## mnumpy广播机制
python 复制代码
a = np.arange(3)
python 复制代码
a + 1
复制代码
array([1, 2, 3])

其他常用的api

python 复制代码
b = np.array([1,2,3,4,5,6,7,8,9])
python 复制代码
np.argmax(b)
复制代码
8
python 复制代码
np.argmin(b)
复制代码
0
python 复制代码
np.nonzero(b)
复制代码
(array([0, 1, 2, 3, 4, 5, 6, 7, 8], dtype=int64),)
python 复制代码
np.count_nonzero(b)
复制代码
9
python 复制代码
相关推荐
GG不是gg7 小时前
NumPy-核心函数np.matmul()深入解析
numpy
GG不是gg1 天前
NumPy-核心函数np.dot()深入理解
numpy
好开心啊没烦恼1 天前
Python 数据分析:numpy,抽提,整数数组索引与基本索引扩展(元组传参)。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy·pandas
小高求学之路13 天前
MinIO centos 7 离线(内网) 一键部署安装
python·centos·numpy
NLxxxxX14 天前
爬虫获取数据:selenium的应用
开发语言·爬虫·python·selenium·测试工具·numpy·pandas
沛沛老爹15 天前
NumPy玩转数据科学
人工智能·python·机器学习·numpy·数据科学·多维数组·python库
点云SLAM16 天前
PyTorch 中Tensor常用数据结构(int, list, numpy array等)互相转换和实战示例
数据结构·人工智能·pytorch·算法·list·numpy·tensor
搞IT的放牛娃17 天前
AI人工智能 —— Numpy
人工智能·numpy
摘取一颗天上星️21 天前
机器学习四剑客:Numpy、Pandas、PIL、Matplotlib 完全指南
机器学习·numpy·pandas
Ai财富密码21 天前
【Python教程】CentOS系统下Miniconda3安装与Python项目后台运行全攻略
开发语言·python·numpy