nmupy 索引/元素类型/数组运算/函数

indexing

实例子:取子矩阵

a = np.array([[1,2,3,4],
             [5,6,7,8],
             [9,10,11,12]])


#取子矩阵
array([[ 6,  7],
       [10, 11]])

a[-2:,1:3]   

###

-2:,行,倒数第二行一直到最后
1:3,列,从第一列,到第三列。

#取 数字7
a[1,-2]

 二维数据,也有可能产生一维。

当我们在一个纬度,采用整数来获取元素,a.shape,来获取的时候,纬度就会-1

当我们,不采用整数获取元素的时候,纬度可能会+1,或者不变。

arange:产生一个指定范围的数组

a 
array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
#a数组,每一行的第二列数字+10
方法一:
a[np.arange(3),1]+=10
方法二:
a[np.arange(3),[1,1,1]]+=10
方法三:
a[[0,1,2],[1,1,1]]+=10
array([[1,12,3,4],
        [5,16,7,8],
        [9,20,11,12]])

##
np.arange(3)
array([0,1,2]) #产生一个包含数组[0,1,2]

##np.arange(3,7)
arry([3,4,5,6]) #产生一个数组,从3到7,不包含7

result_index = a>10

a[result_index] 

#获取a>10的元素,保存到一个数组中
#简化操作

a[a>10]

元素的数据类型

import numpy as np
a = np.array([1,2])
a.dtype

#dtype(int64)
a = np.array([1.1,2.2])
a.dtype()

#dtype('float64')

a = np.array([1,2.2])
#dtype('float64')

#a = np.array([1.1,2.6])
a= np.array([1.1,2.6],dtype=np.int64) #指定数据类型
结果:去掉小数部分
array([1,2])


###
a = np.array([1.1,2.6])
b = np.array(a,type=np.int64)

b结果:
array([1,2])

数组运算和常用函数

 例子:非矩阵操作的加减乘除运算

a = np.array([[1,2], 
[
2,3]]) b = np.array([[5,6], [7,8]])
加法运算: a
+b np.add(a,b)

结果:a,b相对应的位置加减法 array([[
6, 8], [ 9, 11]])


减法运算:对应位置的减法
a-b
np.subtrack(a,b)


乘法运算:
a*b
np.multiply(a,b)

除法运算:
a/b
np.divide(a,b)

矩阵运算操作:

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

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

矩阵之间的运算:乘  a的列,与b的行数相等
a.dot(b)
np.dot(a,b) 

结果:
array([[ 9, 12, 15],
       [14, 19, 24]])

numpy 常用函数

sum函数:求和

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

np.sum(a)

# sum:对数组a中的元素,做求和操作

np.sum(a,axis=0)

#axis=0对数组中的每一列,求和操作

# array([3,5])

np.sum(a,axis=1)

#axis=1对数组中的每一行,求和操作

# array([3,5])

mean函数:均值

np.mean(a)

#对数组a,所有和的平均值

#对数组a 的每一列,均值操作
np.mean(a,axis=0)

#对数据a,的每一行,均值操作
np.mean(a,axis=1)

uniform函数:指定范围内的随机数值

np.random.uniform(3,4)
#指定生成3,4范围内的随机数值(带小数)

tile函数:一个元素重复指定的次数。

a = array([
        [1,2],
        [2,3]])

np.tile(a,(1,2))
#1行2列,基本单位是a,
#行不变,以a为单位,在列上重复
array([[1, 2, 1, 2], [2, 3, 2, 3]])

np.tile(a,(2,1))
#2行1列,a为单位
#列不变,a为单位,在行上重复

array([[1, 2],

       [2, 3],

       [1, 2],

       [2, 3]])



np.tile(a,(2,3))
#a为单位,在行重复2次,在列上重复3次

array([[1, 2, 1, 2, 1, 2],

       [2, 3, 2, 3, 2, 3],

       [1, 2, 1, 2, 1, 2],

       [2, 3, 2, 3, 2, 3]])

 argsort函数:用于将数组当中的元素进行排序。

a = np.array([[3,6,4,11],
          [5,10,1,3]])

a.argsort()
#每一行元素的下标,从小到大排序的
array([0,2,1,3],
[2,3,0,1])

#每一列元素下表,按从小到大排序
array([0,0,1,1],
[1,1,0,0])

矩阵转置操作

a = np.array([[3,6,4,11],
                   [5,10,1,3]])

#2种转置方法 a.T
np.transpose(a)
#第一列,转置成第一行,以此类推 array([3,5], [6,10], [4,1], [11,3])

广播:

在缺失纬度,和数组为1的纬度进行

a = np.array([[1,2,3],
             [2,3,4],
             [12,31,22],
             [2,2,2]])
#二维,4*3的数据
b = np.array([1,2,3])

#将a的每一行,和b相加
第一种方式:

for i in range(4):
a[i, :] += b

#结果

array([[ 2, 4, 6],
[ 3, 5, 7],
[13, 33, 25],
[ 3, 4, 5]])

第二种方式:

a + np.tile(b,(4,1))

a+,以b为单位,行重复4次,列重复1。

#

array([[ 3, 6, 9],
[ 4, 7, 10],
[14, 35, 28],
[ 4, 6, 8]])

第三种方式:

a + b

广播会在缺失纬度,和数组为1的纬度进行,这就是广播特性。






猜你喜欢

转载自www.cnblogs.com/catherine007/p/8947207.html
今日推荐