NumPy基础教程

NumPy基础教程

1.基础认识

NumPy中主要操作对象是N维数组(narray)。与数学有所不同,NumPy有自己的一些定义:维度(dimension)被称为轴(axis),轴的数量被称为秩(rank)。
a = [1,2,3] #a的秩是1,第一个轴的长度是3
b = [[1,2,3],[2,4,5]] #b的秩是2,第一个轴的长度是2,第2个轴的长度是3

NumPy中的N维数组(narray)有许多便利的属性,我们举例说明

>>> import numpy as np
>>> a = np.arange(15).reshape(3, 5) #arange(n):生成从0到n的序列;reshape(x,y):将序列重新塑造成3行5列的narray
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a.shape #返回narray的(行数,列数)
(3, 5)
>>> a.ndim #返回narray的秩
2
>>> a.dtype.name #返回narray中数据的类型
'int64'
>>> a.itemsize #返回narray中每个元素的比特大小8 = 64 / 8
8
>>> a.size #返回narray中的元素个数
15
>>> type(a) #返回a的类型
<type 'numpy.ndarray'>

(2)创建N维数组

创建N维数组可以有很多方式,可以对Python自带的列表和元组使用array()函数进行创建N维数组

a = array([12,3,41])
b = array((1,2,3,4))

创建秩为2的narray:

a = array([(1,2,3),(4,5,6)])
a = array([[1,2,3],[4,5,6]])

可以在创建narray的同时指定其中的数据类型

c = array([[1,2,3],[4,5,6]],dtype = complex) #复数型

创建其中元素全为0的narray:

a = zeros((3,4)) #创建3行4列的零矩阵

创建其中元素全为1的narray:

a = ones((2,3,4))
创建其中元素内容随机但受内存状况影响的narray:
a = empty((2,3)) #默认数据类型为 float64

创建大于等于m,小于等于n,步长为k的序列:

a = arange(m,n,k)
a = arange(2,5,2)
>>>a
array([2,4])

创建从m到n的k个数的序列:

a = linspace(m,n,k)
a = linspace(0,2,9)
>>>a
array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ])

(3)输出N维数组

NumPy中的N维数组可以直接通过Python自带的print()函数输出。

应该注意,N维数组的输出顺序是:倒数第一个轴是从左往右输出,除了倒数第一个轴的其他所有轴是从上往下输出

>>> a = np.arange(6)                         # 1d array
>>> print(a)
[0 1 2 3 4 5]
>>>
>>> b = np.arange(12).reshape(4,3)           # 2d array
>>> print(b)
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
>>>
>>> c = np.arange(24).reshape(2,3,4)         # 3d array
>>> print(c)
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]
 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

(4)对narray的基本操作

在NumPy中,对N维数组的基本数学运算都是对其中的元素直接操作:

>>> 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)

请注意,上面所提到的乘法运算并不是线性代数中的矩阵乘法。若要使用矩阵乘法,请使用dot()方法:

>>> A = np.array( [[1,1],
...             [0,1]] )
>>> B = np.array( [[2,0],
...             [3,4]] )
>>> A*B                         # elementwise product
array([[2, 0],
       [0, 4]])
>>> A.dot(B)                    # matrix product
array([[5, 4],
       [3, 4]])
>>> np.dot(A, B)                # another matrix product
array([[5, 4],
       [3, 4]])

NumPy中也自带了许多被称为“通用函数”的数学函数:

>>> 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.])

还有许多函数没有列出,请自行参照官方文档。

官方文档:https://docs.scipy.org/doc/numpy/user/








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值