【笔记】Numpy - 数组操作

import numpy as np

创建数组

a = np.array([2,4,6])

获取数组类型和数组元素个数

type(a)
# 输出为 numpy.ndarray

a.shape
# 输出为 (3,)
# 表示a为一维数组,有3个元素

确定数组维数

a = a.reshape((1,-1))
#表示将a数组指定为1行,-1为占位符(即:a数组中的元素个数已知,确定了行数后,列数也就确定了,所以 -1 为占位符)

a = a.reshape((-1,1))
#表示将数组指定为1列,-1为占位符

修改数组中指定元素

例如创建数组m

m = np.array([2,3,7,8,9,0])

确定数组维数为2行3列

m = m.reshape((2,-1))

输出数组m的结果

array([[2, 3, 7],
       [8, 9, 0]])

将 0 改为 1

m[1,2] = 1

创建数组的函数

zeros(m,n):创建m行n列的全零函数

a = np.zeros((3,4))

ones(m,n):创建m行n列的全1函数

a = np.ones((4,5))

full((m,n),x)函数:创建m行n列的全x函数

a = np.full((9,19),100)

eye():创建单位矩阵

a = np.eye(4)

random.random():创建一个随机数组

a = np.random.random((5,6))

数组索引

取出数组中的部分数值

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

a[-2:,1:3] # 表示取出倒数第二行到最后一行,第一列到第三列的数,但不包括第三列

\# 输出结果为
array([[6,7],
      [10,11]])

将数组中的某行或某列加上某个数

a[np.arange(3),2] += 2
\# 将a数组的第二列元素加上2

a[np.arrange(3),[1,2,3]] += 2
\# 将数组的第1,2,3列分别加上2

a[[0,1,2],[1,2,3]] += 2

np.arange(3)
\# 输出结果为:array([0,1,2])

获取数组中所有大于某个数的值

result_index = a > 10
result_index

\# 判断结果为:
array([[False, False, False, False],
       [False, False,  True, False],
       [False, False,  True,  True]])

\# 获取结果:
[result_index]
array([11, 13, 14])

\# 简化操作
a[a>10]
array([11, 13, 14])

元素的数据类型

a=np.array([1,2])
a.dtype
#输出结果:dtype('int32')

创建数据类型为 int64 的数组,对于小数直接取整

a = np.array([1.2,4.6],dtype=np.int64)

矩阵运算

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

加减乘除以及开方

a + b 
\# 等价于
np.add(a,b)

a - b
\# 等价于
np.subtract(a,b)

a * b
\# 等价于
np.multiply(a,b)

a / b
\# 等价于
np.divide(a,b)

np.sqrt(a)

矩阵乘法

a.dot(b)
\# 等价于
np.dot(a,b)

常用函数

sum()函数:求和

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

np.sum(a)     # 求数组所有元素的和
\# 运行结果:10

np.sum(a,axis=0)   # 求每列元素的和
\# 运行结果:array([4,6])

np.sum(a,axis=1)   # 求每行元素的和
\# 运行结果:array([3,7])

mean()函数:求平均值,用法与sum()函数一致

np.mean(a)
np.mean(a,axis=0)
np.mean(a,axis=1)

uniform(函数):生成指定范围类的随机数

np.ramdom.uniform(4,7) 
\# 运行结果:5.679353281008951

tile()函数:生成重复元素

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

np.tile(a,(1,2))    # 将a看成一个整体,在行上重复1次,列上重复2次
\# 输出结果
array([[1, 2, 1, 2],
       [3, 4, 3, 4]])

np.tile(a,(3,2))   # 将a看成一个整体,在行上重复1次,列上重复2次
\# 输出结果
array([[1, 2, 1, 2],
    [3, 4, 3, 4],
    [1, 2, 1, 2],
    [3, 4, 3, 4],
    [1, 2, 1, 2],
    [3, 4, 3, 4]])

argsort()函数:对数组元素排序

a = np.array([[1,3,5,2],
              [7,3,9,0]])

a.argsort()     # 对每行元素从小到大排序,返回每行元素下标
\# 输出结果
array([[0, 3, 1, 2],
       [3, 1, 0, 2]], dtype=int64)

a.argsort(axis=0)   #对每列元素从小到大排序,返回每列元素下标
\# 输出结果
array([[0, 0, 0, 1],
        [1, 1, 1, 0]], dtype=int64)

矩阵转置

a.T
\# 或者
np.transpose(a)

相关代码

python-numpy-nootbook

2019-12-06 06:44:38