numpy基本操作手册

numpy优点

  • ndarray(高性能数组)
  • 用于对整数数组进行快速运算的标准数学函数
  • 线性代数、随机数生成,统计分析等接口

ndarray

  • array创建
data = [1,3,7,8]
arr = np.array(data)
data1 =[ [1,3,7,8],[9,7,5,3]]
arr1 = np.array(data1)
print(arr)
print(arr1)
>>>[1 3 7 8]
>>>[[1 3 7 8] [9 7 5 3]]
  • asarray方法创建
arr3 = np.asarray([3,4,5])
print(arr3)
>>>[3 4 5]

区别:array创建是对原始数据的一份拷贝,asarray则是指向原始对象

  • 创建一个全零数组
arr0 = np.zeros(4)
arr1 = np.zeros((2,3))
print(arr0)
print(arr1)
>>>[0. 0. 0. 0.]
>>>[[0. 0. 0.] [0. 0. 0.]]
  • 创建一个全1数组
ones1 = np.ones(4)
ones2 = np.ones((2,3))
print(ones1)
print(ones2)
>>>[1. 1. 1. 1.]
>>>[[1. 1. 1.] [1. 1. 1.]]
  • 创建一个没有任何值的数组
np.empty((3,4))
  • 创建一个单位矩阵
e = np.eye(3)
print(e)
>>>[[1. 0. 0.]
    [0. 1. 0.]
    [0. 0. 1.]]
  • 矩阵形状
e = np.eye(3)
shape = e.shape
print(shape)
>>>(3, 3)

ndarray与标量之间的计数

  • ndarray与常量计算
arr = np.asarray([[200,0,0],[0,0,0]])
arr1 = arr+3
print(arr1)
>>>[[203   3   3]
    [3   3   3]]
arr2 = arr*1.2
print(arr2)
>>>[[240.   0.   0.]
   [0.   0.   0.]]
  • ndarray之间计算
arr = np.asarray([[200,0,0],[0,0,0]])
arr1 = np.asarray([[2,1,4],[1,7,9]])
arr2 = arr*arr1
print(arr2)
arr3 = arr + arr1
print(arr3)
arr4 = np.add(arr,arr1)
print(arr4)
>>>[[400   0   0]
    [0   0   0]]
>>>[[202   1   4]
    [1   7   9]]
>>>[[202   1   4]
    [1   7   9]]
  • 数组索引
arr = np.asarray([[200,0,0],[0,0,0]])
print(arr[0])
>>>[200   0   0]
  • 数组切片
a= [1,2,3,4,5,6]
print(a[2:4])
>>>[3, 4]
b = [[1,3,5,7,9],[2,4,6,8,0]]
print(b[0][0:3])
>>>[1, 3, 5]
b = [[1,3,5,7,9],[2,4,6,8,0],[3,4,5,6,7]]
print(b[0:1,:])
>>>[[1, 3, 5, 7, 9]]
  • 花式索引
arr = np.empty((8,4))
for i in range(8):
    arr[i] = i
print(arr)
#以某种特定顺序选取行子集,只需要传入一个用于指定行顺序的整数数组或ndarray
print(arr[[3,5,1,6]])
>>>
[[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.]]
>>>
[[3. 3. 3. 3.]
 [5. 5. 5. 5.]
 [1. 1. 1. 1.]
 [6. 6. 6. 6.]]
arr = np.arange(32).reshape((8,4))
print(arr)
>>>
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]
 [20 21 22 23]
 [24 25 26 27]
 [28 29 30 31]]
#数组索引
#同时传入一个二维数组
#数组索引第一个元素为一个数组,代表行的序号,数组索引第二个元素为一个数组,表示列的序号
print(arr[[1,5,7,2],[0,3,1,2]])
>>>[ 4 23 29 10]
#数组索引第一个元素为一个数组,表示行的序号,第二个索引为一个切片,表示一个列的切片
print(arr[[1,5,7],0:3])
>>>
[[ 4  5  6]
 [20 21 22]
 [28 29 30]]
#选取4行,所有列,修改列顺序
print(arr[[1,5,7,2]][:,[3,2,1,0]])
>>>
[[ 7  6  5  4]
 [23 22 21 20]
 [31 30 29 28]
 [11 10  9  8]]
print(arr[np.ix_([1,5,7,2],[0,2,1,3])])
>>>
[[ 4  6  5  7]
 [20 22 21 23]
 [28 30 29 31]
 [ 8 10  9 11]]

numpy常用函数

对数组进行元素级的运算函数

  • 指数函数 exp()
arr = np.arange(16).reshape((4,4))
print(arr)
arr1 = np.exp(arr)
print(arr1)
  • 绝对值 abs()
  • 平方 square()
  • 开根号 sqrt()

数学统计方法

  • 计算均值 mean()
arr = np.arange(16).reshape((4,4))
print(arr.mean())
>>>7.5
print(np.mean(arr))
>>>7.5
print(np.mean(arr,axis=0))
>>>[6. 7. 8. 9.]
print(np.mean(arr,axis=1))
>>>[ 1.5  5.5  9.5 13.5]
  • 数组或某轴上的元素求和 sum()
  • 标准差和方差 std() var()
  • 最小值和最大值 min() max()
  • 最小值和最大值的索引 argmin() argmax()
  • 所有元素的累计和 cumsum()
  • 所有元素的累积 cumprod()

线性代数

  • 矩阵相乘 dot()
x = np.array([[1,2,3],[4,5,6]])
y = np.array([[6,20],[-1,3],[9,8]])
z = np.dot(x,y)
print(z)
>>>
[[ 31  50]
 [ 73 143]]

标准线性代数运算函数 numpy.linalg

  • 矩阵的逆矩阵 linalg.inv()
X = np.random.rand(5,5)
print(X)
inv_X = np.linalg.inv(X)
print(inv_X)
  • 转置矩阵 X.T
  • diag 以一维数组的形式返回方阵的对角线元素,或者将一维数组转化为方阵
  • dot 矩阵乘法
  • trace 计算对角线元素的和
  • det 计算矩阵行列式
  • eig 计算方阵的本征值和本征向量
  • inv 计算方阵的逆
  • pinv 计算矩阵的Moore-Penrose伪逆
  • qr 计算QR分解
  • svd 计算奇异值分解
  • solve 解线性方程组Ax = b
  • lstsq 计算Ax = b的最小二乘解

随机数生成 numpy.random

  • 高斯分布
    np.random.normal(size = (4,4))
  • seed 确定随机数生成器的种子
  • permutation 返回一个序列的随机排列
  • shuffle 对一个序列随机排列
  • rand 产生均匀分布样本值
  • randint 给定的上下限范围,随机选取整数
  • randn 产生正态分布数值
  • binomial 产生二项分布数值
  • normal 产生高斯分布
  • beta 产生beta分布

你可能感兴趣的:(numpy基本操作手册)