python -- numpy 学习笔记

@[python numpy学习笔记]

python numpy学习

本文章为我个人在学习python数据分析中numpy使用的一些学习心得

1.Numpy简介

NumPy是一个Python包,它是一个由多维数组对象和用于处理数组的例程集合组成的库。

通过Numpy,可以进行如下操作:

1.数组的算数和逻辑运算。
2.傅立叶变换和用于图形操作的例程。
3.与线性代数有关的操作,NumPy 拥有线性代数和随机数生成的内置函数。

现在一般通过Numpy、Scipy(Scientific Python)和Matplotlib(绘图库)结合来替代MatLab,是一个流行的技术计算平台。

2.数组创建

ndarray是一个多维数组对象,由两部分组成:

  • 实际的数据·
  • 描述这些数据的元数据(数据维度(shape),数据类型(dtype)等)

下面我们看一些简单例子:

import numpy as np
ar=np.array([1,2,3,4])#创建一维数组
print(ar)

[1 2 3 4]
import numpy as np 
ar=np.array([[1,2,3,4],[4,5,6,7]])#创建多维数组
print(ar)

创建零数组:

import numpy as np
a =np.zeros((3,4))
print(a)
####
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

创建一矩阵:

import numpy as np
a =np.ones((2,3,4),dtype=np.int16)
print(a)
####
[[[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]

创建单位数组:

import numpy as np
a =np.eye(3)
print(a)
####
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

创建长度自定义的一维数组:

import numpy as np
a =np.arange(6)
print(a)
####
[0 1 2 3 4 5]

创建制定间隔内均匀间隔的数组:

import numpy as np
a =np.linspace(1,10,20)
print(a)
####
[ 1.          1.47368421  1.94736842  2.42105263  2.89473684  3.36842105
  3.84210526  4.31578947  4.78947368  5.26315789  5.73684211  6.21052632
  6.68421053  7.15789474  7.63157895  8.10526316  8.57894737  9.05263158
  9.52631579 10.        ]

生成随机数:

import numpy as np
print(np.random.randint(1,10))#产生110的一个整数型随机数
print(np.random.random())#产生01之间的随机浮点数
print(np.random.uniform(1.1,5.4))#产生1.15.4之间的随机浮点数,区间可以不是整数

3.数组操作

ndarray.shape:这一数组属性返回一个包含数组维度的元组,它也可以用于调整数组大小。

import numpy
a = numpy.array([[1,2,3],[4,5,6]])
print(a.shape)
#####
(2, 3)

调整数组大小:

import numpy
a = numpy.array([[1, 2, 3], [4, 5, 6]])
a.shape = (3, 2)
print(a)
####
[[1 2]
 [3 4]
 [5 6]]
import numpy
a = numpy.array([[1,2,3],[4,5,6]]).reshape(3,2)
print(a)
####
[[1 2]
 [3 4]
 [5 6]]

数据类型对象dtype

import numpy as np
x = [1, 2, 3]
a = np.asarray(x,dtype=float)
print(a)
####
[1. 2. 3.]

对数组进行索引和切片:
一维数组的索引和切片:

import numpy
a = numpy.arange(10)
print(a)
print(a[1:8])
print(a[:8:3])
print(a[::-1])
####
[0 1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6 7]
[0 3 6]
[9 8 7 6 5 4 3 2 1 0]

多维数组的索引和切片:

import numpy as np
a = np.arange(16).reshape(2,4,2)
print(a)
print(a[0,0,0])
print(a[1,3,1])
print(a[:,0,0])
print(a[0])
print(a[0,:,:])
print(a[0,...])
print(a[0, :, 1])
print(a[0, :, -1])
print(a[0, ::-1, -1])
print(a[0, ::2, -1])
print(a[::-1])
####
[[[ 0  1]
  [ 2  3]
  [ 4  5]
  [ 6  7]]

 [[ 8  9]
  [10 11]
  [12 13]
  [14 15]]]
0
15
[0 8]
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
[1 3 5 7]
[1 3 5 7]
[7 5 3 1]
[1 5]
[[[ 8  9]
  [10 11]
  [12 13]
  [14 15]]

 [[ 0  1]
  [ 2  3]
  [ 4  5]
  [ 6  7]]]

对数组进行排序:

import numpy as np
a = np.random.rand(16).reshape(4,4)
print(a)
print(np.sort(a))
####
[[0.64949845 0.37335864 0.44213273 0.12334263]
 [0.87506032 0.70278265 0.32635172 0.14085263]
 [0.6327005  0.23237967 0.13929995 0.8391852 ]
 [0.70352121 0.46165929 0.07995412 0.69004253]]
 
[[0.12334263 0.37335864 0.44213273 0.64949845]
 [0.14085263 0.32635172 0.70278265 0.87506032]
 [0.13929995 0.23237967 0.6327005  0.8391852 ]
 [0.07995412 0.46165929 0.69004253 0.70352121]]

4.数组运算

import numpy as np
a = np.array([[2,3,1],[4,6,5],[7,9,8]])
print(a)
####
[[2 3 1]
 [4 6 5]
 [7 9 8]]
print(np.max(a))#返回数组中最大元素
####
9
print(np.min(a))#返回数组中最小元素
####
1
print(np.argmax(a))#返回数组中最大元素的索引
####
7
print(np.argmin(a))#返回数组中最小元素的索引
####
2
print(np.sum(a))#对数组a中所有元素求和
####
45
print(np.sum(a,axis=1))#对数组a按行求和
####
[ 6 15 24]
print(np.sum(a,axis=0))#对数组a按列求和
####
[13 18 14]
print(np.mean(a))#对数组a所有元素求算数平均值
####
5.0

5.数组元素运算

import numpy as np
a = np.array([[2,3,1],[4,6,5],[7,9,8]])
print(a)
####
[[2 3 1]
 [4 6 5]
 [7 9 8]]
print(np.add(a,3))#数组a的每个元素加上3
####
[[ 5  6  4]
 [ 7  9  8]
 [10 12 11]]
print(np.subtract(a,1))#数组a的每个元素减去1
####
[[1 2 0]
 [3 5 4]
 [6 8 7]]
print(np.multiply(a,2))#数组a的每个元素乘以2
####
[[ 4  6  2]
 [ 8 12 10]
 [14 18 16]]
print(np.divide(a,2))#数组a的每个元素除以2
####
[[1.  1.5 0.5]
 [2.  3.  2.5]
 [3.5 4.5 4. ]]
print(np.mod(a,3))#数组a的每个元素对3求余
####
[[2 0 1]
 [1 0 2]
 [1 0 2]]
print(np.power(a,2))#数组a每个元素进行2次乘方
####
[[ 4  9  1]
 [16 36 25]
 [49 81 64]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值