python之基础numpy库使用(一)

Numpy(numerical python的简称)是高性能科学计算和数据分析的基础包,python中安装许多其他库(如scipy,matplotlib等都需要numpy已经安装),这儿打算简单介绍一下它的基本使用,初定一个系列(希望能写完)安静

写在前面:

(1)导入numpy库的约定写法:import numpyasnp

(2)索引下标从0开始,且前闭后开(比如0-3,实际是0,1,2)

(3)下面采用Ipython进行代码示例,即输入为In,输出为Out


1 numpy之ndarray,一种多维数组对象,是一个多维的同构数据容器

1)创建ndarray

A:使用array函数

data=[1,2,3,4,5]

arr1=np.array(data)

In[4]: arr1

Out[4]:

array([1, 2, 3, 4, 5])

In[5]: data2=[[1,2,3,4],[5,6,7,8]]

In[6]: arr2=np.array(data2)

In[7]: data2

Out[7]:

[[1, 2, 3, 4], [5, 6, 7, 8]]

额外的两个函数说明

(1)ndarray.ndim:数组的维数(即数组轴的个数),等于秩

In[8]: arr2.ndim

Out[8]: 2

(2)ndarray.shape:返回大小

In[9]: arr2.shape

Out[9]:

(2, 4)

补充说明,除非显示说明,np.array会尝试为新建的数组推断出一个合适的数据类型,可以用dtype来获取数据类型,再罗嗦一下,也可以这样:

In[19]: arr3=np.array([1,2,3],dtype=np.float64)

In[10]: arr3.dtype   

Out[10]:

dtype(' float64')

 

此外,使用np.ones(),np.zeros(),可以创建全0或全1 的数组

In[14]: a=np.zeros((2,3))

In[15]: a

Out[15]:

array([[ 0.,  0., 0.],

      [ 0.,  0.,  0.]])

In[16]: np.ones((2,3))

Out[16]:

array([[ 1.,  1., 1.],

      [ 1.,  1.,  1.]])

arange是python内置函数range的数组版

In[18]: np.arange(10)

Out[18]:

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

下表为一些常见函数说明:

下表为numpy的数据类型:




可以通过astype方法显式地转换dtype(下面的代码是用python自带的IDLE编辑,pycharm出了点问题哭

>>> arr=np.array([1,2,3])

>>> arr

array([1, 2, 3])

>>> arr.astype(float64)

>>> arr.astype(float)

array([ 1., 2.,  3.])

二、数组和标量之间地运算

>>>arr=np.array([[1,2,3],[2,3,4]])

>>> arr*arr

array([[ 1, 4,  9],

      [ 4,  9, 16]])

>>> arr*2

array([[2, 4, 6],

     [4, 6, 8]])

>>> 1/arr

array([[ 1.        , 0.5       ,  0.33333333],

          [ 0.5       ,  0.33333333, 0.25      ]])

三、基本的索引与切片

>>> arr=np.array([1,2,3,4])

>>> arr[2]

3

>>> arr[1:3]

array([2, 3])

>>> arr[-1]

4

>>> arr[1:3]=12

>>> arr

array([ 1, 12, 12,  4])

#如上,numpy具有广播机制,数组切片是原始数据地视图,意味着不会复制,视图上地任何修改都会反映到源数据上。因为python是用来处理大数据,复制会影响内存和性能,如果需要复制,那么使用copy()函数

二维数组地索引有以下两种:

>>>arr=np.array([[1,2,3],[2,3,4]])

>>> arr[1,1]

3

>>> arr[1][1]

3

下图说明了二维数组地索引方式:


三维以上以此类推(索引都是从0开始的),此外还有bool数组和索引,此处不再详述。另外再讲一点,numpy中的花式索引

>>> arr=np.empty((8,4))        #empty生成空数组

>>> for i in range(8):

         arr[i]=i

>>> arr

array([[ 0.,  0., 0.,  0.],

      [ 1.,  1.,  1., 1.],

      [ 2.,  2.,  2., 2.],

      [ 3.,  3.,  3., 3.],

      [ 4.,  4.,  4., 4.],

      [ 5.,  5.,  5., 5.],

      [ 6.,  6.,  6., 6.],

      [ 7.,  7.,  7., 7.]])

>>> arr[[1,3,0,4]]               #输出了第1、3、0、4行

array([[ 1.,  1., 1.,  1.],

      [ 3.,  3.,  3., 3.],

      [ 0.,  0.,  0., 0.],

      [ 4.,  4.,  4., 4.]])





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值