最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

常用numpy用法详细介绍

来源:懂视网 责编:小采 时间:2020-11-27 14:25:15
文档

常用numpy用法详细介绍

常用numpy用法详细介绍:numpy 简介numpy的存在使得python拥有强大的矩阵计算能力,不亚于matlab。官方文档(https://docs.scipy.org/doc/numpy-dev/user/quickstart.html)各种用法介绍首先是numpy中的数据类型,ndarray类型,和标准库中的array.array并不一样。
推荐度:
导读常用numpy用法详细介绍:numpy 简介numpy的存在使得python拥有强大的矩阵计算能力,不亚于matlab。官方文档(https://docs.scipy.org/doc/numpy-dev/user/quickstart.html)各种用法介绍首先是numpy中的数据类型,ndarray类型,和标准库中的array.array并不一样。

numpy 简介

numpy的存在使得python拥有强大的矩阵计算能力,不亚于matlab。
官方文档(https://docs.scipy.org/doc/numpy-dev/user/quickstart.html)

各种用法介绍

首先是numpy中的数据类型,ndarray类型,和标准库中的array.array并不一样。

ndarray的一些属性

ndarray.ndim
the number of axes (dimensions) of the array. In the Python world, the number of dimensions is referred to as rank.
ndarray.shape
the dimensions of the array. This is a tuple of integers indicating the size of the array in each dimension. For a matrix with n rows and m columns, shape will be (n,m). The length of the shape tuple is therefore the rank, or number of dimensions, ndim.
ndarray.size
the total number of elements of the array. This is equal to the product of the elements of shape.
ndarray.dtype
an object describing the type of the elements in the array. One can create or specify dtype’s using standard Python types. Additionally NumPy provides types of its own. numpy.int32, numpy.int16, and numpy.float64 are some examples.
ndarray.itemsize
the size in bytes of each element of the array. For example, an array of elements of type float64 has itemsize 8 (=64/8), while one of type complex32 has itemsize 4 (=32/8). It is equivalent to ndarray.dtype.itemsize.
ndarray.data
the buffer containing the actual elements of the array. Normally, we won’t need to use this attribute because we will access the elements in an array using indexing facilities.

ndarray的创建

>>> import numpy as np>>> a = np.array([2,3,4])>>> a
array([2, 3, 4])>>> a.dtype
dtype('int64')>>> b = np.array([1.2, 3.5, 5.1])>>> b.dtype
dtype('float64')

二维的数组

>>> b = np.array([(1.5,2,3), (4,5,6)])>>> b
array([[ 1.5, 2. , 3. ],
 [ 4. , 5. , 6. ]])

创建时指定类型

>>> c = np.array( [ [1,2], [3,4] ], dtype=complex )>>> c
array([[ 1.+0.j, 2.+0.j],
 [ 3.+0.j, 4.+0.j]])

创建一些特殊的矩阵

>>> np.zeros( (3,4) )
array([[ 0., 0., 0., 0.],
 [ 0., 0., 0., 0.],
 [ 0., 0., 0., 0.]])
>>> np.ones( (2,3,4), dtype=np.int16 ) # dtype can also be specified
array([[[ 1, 1, 1, 1],
 [ 1, 1, 1, 1],
 [ 1, 1, 1, 1]],
 [[ 1, 1, 1, 1],
 [ 1, 1, 1, 1],
 [ 1, 1, 1, 1]]], dtype=int16)
>>> np.empty( (2,3) ) # uninitialized, output may vary
array([[ 3.73603959e-262, 6.02658058e-154, 6.55490914e-260],
 [ 5.30498948e-313, 3.14673309e-307, 1.00000000e+000]])

创建一些有特定规律的矩阵

>>> np.arange( 10, 30, 5 )
array([10, 15, 20, 25])
>>> np.arange( 0, 2, 0.3 ) # it accepts float arguments
array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])

>>> from numpy import pi
>>> np.linspace( 0, 2, 9 ) # 9 numbers from 0 to 2
array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
>>> x = np.linspace( 0, 2*pi, 100 ) # useful to evaluate function at lots of points
>>> f = np.sin(x)

一些基本的运算

加减乘除三角函数逻辑运算

>>> a = np.array( [20,30,40,50] )
>>> b = np.arange( 4 )
>>> b
array([0, 1, 2, 3])
>>> c = a-b
>>> c
array([20, 29, 38, 47])
>>> b**2
array([0, 1, 4, 9])
>>> 10*np.sin(a)
array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854])
>>> a<35
array([ True, True, False, False], dtype=bool)

矩阵运算
matlab中有.* ,./等等
但是在numpy中,如果使用+,-,×,/优先执行的是各个点之间的加减乘除法
如果两个矩阵(方阵)可既以元素之间对于运算,又能执行矩阵运算会优先执行元素之间的运算

>>> import numpy as np>>> A = np.arange(10,20)>>> B = np.arange(20,30)>>> A + B
array([30, 32, 34, 36, 38, 40, 42, 44, 46, 48])>>> A * B
array([200, 231, 264, 299, 336, 375, 416, 459, 504, 551])>>> A / B
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])>>> B / A
array([2, 1, 1, 1, 1, 1, 1, 1, 1, 1])

如果需要执行矩阵运算,一般就是矩阵的乘法运算

>>> A = np.array([1,1,1,1])
>>> B = np.array([2,2,2,2])
>>> A.reshape(2,2)
array([[1, 1],
 [1, 1]])
>>> B.reshape(2,2)
array([[2, 2],
 [2, 2]])
>>> A * B
array([2, 2, 2, 2])
>>> np.dot(A,B)
8
>>> A.dot(B)
8

一些常用的全局函数

>>> B = np.arange(3)
>>> B
array([0, 1, 2])
>>> np.exp(B)
array([ 1. , 2.71828183, 7.3890561 ])
>>> np.sqrt(B)
array([ 0. , 1. , 1.41421356])
>>> C = np.array([2., -1., 4.])
>>> np.add(B, C)
array([ 2., 0., 6.])

矩阵的索引分片遍历

>>> a = np.arange(10)**3
>>> a
array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729])
>>> a[2]
8
>>> a[2:5]
array([ 8, 27, 64])
>>> a[:6:2] = -1000 # equivalent to a[0:6:2] = -1000; from start to position 6, exclusive, set every 2nd element to -1000
>>> a
array([-1000, 1, -1000, 27, -1000, 125, 216, 343, 512, 729])
>>> a[ : :-1] # reversed a
array([ 729, 512, 343, 216, 125, -1000, 27, -1000, 1, -1000])
>>> for i in a:
... print(i**(1/3.))
...
nan
1.0
nan
3.0
nan
5.0
6.0
7.0
8.0
9.0

矩阵的遍历

>>> import numpy as np
>>> b = np.arange(16).reshape(4, 4)
>>> for row in b:
... print(row)
... 
[0 1 2 3]
[4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]
>>> for node in b.flat:
... print(node)
... 
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

矩阵的特殊运算

改变矩阵形状--reshape

>>> a = np.floor(10 * np.random.random((3,4)))
>>> a
array([[ 6., 5., 1., 5.],
 [ 5., 5., 8., 9.],
 [ 5., 5., 9., 7.]])
>>> a.ravel()
array([ 6., 5., 1., 5., 5., 5., 8., 9., 5., 5., 9., 7.])
>>> a
array([[ 6., 5., 1., 5.],
 [ 5., 5., 8., 9.],
 [ 5., 5., 9., 7.]])

resize和reshape的区别
resize会改变原来的矩阵,reshape并不会

>>> a
array([[ 6., 5., 1., 5.],
 [ 5., 5., 8., 9.],
 [ 5., 5., 9., 7.]])
>>> a.reshape(2,-1)
array([[ 6., 5., 1., 5., 5., 5.],
 [ 8., 9., 5., 5., 9., 7.]])
>>> a
array([[ 6., 5., 1., 5.],
 [ 5., 5., 8., 9.],
 [ 5., 5., 9., 7.]])
>>> a.resize(2,6)
>>> a
array([[ 6., 5., 1., 5., 5., 5.],
 [ 8., 9., 5., 5., 9., 7.]])

矩阵的合并

>>> a = np.floor(10*np.random.random((2,2)))>>> a
array([[ 8., 8.],
 [ 0., 0.]])>>> b = np.floor(10*np.random.random((2,2)))>>> b
array([[ 1., 8.],
 [ 0., 4.]])>>> np.vstack((a,b))
array([[ 8., 8.],
 [ 0., 0.],
 [ 1., 8.],
 [ 0., 4.]])>>> np.hstack((a,b))
array([[ 8., 8., 1., 8.],
 [ 0., 0., 0., 4.]])

文档

常用numpy用法详细介绍

常用numpy用法详细介绍:numpy 简介numpy的存在使得python拥有强大的矩阵计算能力,不亚于matlab。官方文档(https://docs.scipy.org/doc/numpy-dev/user/quickstart.html)各种用法介绍首先是numpy中的数据类型,ndarray类型,和标准库中的array.array并不一样。
推荐度:
标签: 使用 介绍 详细
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top