python numpy基本操作

python numpy基本操作

1.创建数组

import numpy as np
a=np.array([1,2,3,4])
b=np.array((5,6,7,8))
c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
print(c)
array([[ 1,  2,  3,  4],
       [ 4,  5,  6,  7],
       [ 7,  8,  9, 10]])
  • shape属性获得数组形状和修改数组形状
a.shape #(4,)
b.shape #(4,)
c.shape #(3,4) 第0轴表示行,3表示3行,第1轴表示列,4表示4列
#通过修改shape属性的值来修改数组每个轴的长度
c.shape=4,3
print(c)
'''
输出为:
array([[ 1,  2,  3],
       [ 4,  4,  5],
       [ 6,  7,  7],
       [ 8,  9, 10]])
'''
c.shape=2,-1 #设置某轴为-1时,将自动计算此轴的长度
c
'''
输出为:
array([[ 1,  2,  3,  4,  4,  5],
       [ 6,  7,  7,  8,  9, 10]])
'''

  • reshape()方法,对指定形状的新数组,而原数组形状保持不变
d=a.reshape((2,2))
d
'''
array([[1, 2],
       [3, 4]])
'''
a
'''
array([1, 2, 3, 4])
'''
#注意 a和d共享数组存储空间,修改其中任意一个另一个也被改变
a[1]=100
a
'''
array([  1, 100,   3,   4])
'''
d
'''
array([[  1, 100],
       [  3,   4]])
'''

2.元素类型

  • dtype获得数组的元素类型
c.dtype
#dtype('int32')
af=np.array([1,2,3,4],dtype=float)
af.dtype
#dtype('float64')

3.自动生成数组

  • arange()通过开始值、终值和步长创建一维等差数组,不包含终值
np.arange(0,1,0.1)
#array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
  • linspace()通过制定开始值、终值和元素个数创建一维等差数组,通过设置endpoint参数是否包含终值,默认为true,包含终值;
np.linspace(0,1,10)
'''
array([0.        , 0.11111111, 0.22222222, 0.33333333, 0.44444444,
       0.55555556, 0.66666667, 0.77777778, 0.88888889, 1.        ])
'''
  • logspace()创建等比数列,下面的例子从 1 0 0 10^0 100 1 0 2 10^2 102,有5个数的等比数列;
np.logspace(0,2,5)
'''
array([  1.        ,   3.16227766,  10.        ,  31.6227766 ,
       100.        ])
'''

注意:基数可以通过base来指定,默认是10

  • zeros(),ones()创建制定形状和类型的数组

4.存取元素

  • 类似于列表的方式对数组进行存取
a=np.arange(10)
a
#array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[5] #获取数组中的某一个元素,从0开始
# 5
a[3:5] #利用切片获取数组的一部分,包括a[3],不包括a[5]
# array([3, 4])
a[:5] #省略开始元素,表示从a[0]开始
# array([0, 1, 2, 3, 4])
a[:-1] #从a[0]开始到最后一个元素,不包括最后一个元素
# array([0, 1, 2, 3, 4, 5, 6, 7, 8])
a[1:-1:2] #2表示步长为2,
#array([1, 3, 5, 7])
a[::-1] #省略开头和结尾,步长为-1,表示数组头尾颠倒
#array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
a[5:1:-2] #步长为负数,开始下标大于结束下标
#array([5, 3])

注意:通过上述方法得到的数组是原数组的一个视图,共享同一个数据存储空间

  • 使用整数列表获取数组元素,使用列表中的每个元素作为下标获取元素,该方法获得的数组与原数组不共享存储空间
x=np.arange(10,1,-1)
x
#array([10,  9,  8,  7,  6,  5,  4,  3,  2])
x[[3,3,1,8]] #获取xzhon 的下标为3 3 1 8的4个元素,组成一个新的数组
#array([7, 7, 9, 2])

5.多维数组

​ 例如2维数组,第0轴表示行,第1轴表示列

a=np.arange(0,60,10).reshape(-1,1)+np.arange(0,6)
a
'''
array([[ 0,  1,  2,  3,  4,  5],
       [10, 11, 12, 13, 14, 15],
       [20, 21, 22, 23, 24, 25],
       [30, 31, 32, 33, 34, 35],
       [40, 41, 42, 43, 44, 45],
       [50, 51, 52, 53, 54, 55]])
'''

​ 多维数组的选取:

a[0,3:5] #逗号表示分隔开不同的维度,表示第0行,第3列到第5列数字(不包括第5列)
#array([3, 4])
a[4:,4:]
'''
array([[44, 45],
       [54, 55]])
'''
a[:,2] #第3列的数字
#array([ 2, 12, 22, 32, 42, 52])
a[2::2,::2] #第3行开始,每隔2行取数,列从第一列到最后一列每隔2列取数
'''
array([[20, 22, 24],
       [40, 42, 44]])
'''
  • 利用整数元组或列表选取数组
a[(0,1,2,3),(1,2,3,4)] #(0,1,2,3)表示第0轴,(1,2,3,4)表示第1轴
#array([ 1, 12, 23, 34])
  • 利用布尔数组
mask=np.array([1,0,1,0,0,1],dtype=np.bool)
a[mask,2]#第0轴是布尔数组,表示第1,3,5行取数,第1轴表示取第3列数字
#array([ 2, 22, 52])

总结:

​ 本文总结了numpy中的基本操作,方便后序查找使用;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值