Python中的numpy模块学习

Python中的numpy模块学习

本文是基于Windows系统环境,学习和测试numpy模块:

  • Windows 10

  • PyCharm 2018.3.5 for Windows (exe)

  • python 3.6.8 Windows x86 executable installer


1. numpy初始化数组和矩阵

  • numpy初始化一个空数组
import numpy as np
a = np.array([])
print(a.size) # size = 0

b = np.array([], dtype=int)
  • numpy利用列表初始化一个数组
import numpy as np
a = np.array([1,2,3]) # 初始化一个3×1的向量
print(np.shape(a)) # np.shape(a)=(3,)
print(a.size) # size =3
  • numpy利用列表初始化一个矩阵
import numpy as np
a = np.array([[1,2,3],[2,3,4]]) # 初始化一个2×3的矩阵
print(np.shape(a)) # np.shape(a)=(2,3)
print(a.size) # size =6
  • numpy生成元素值全为0的一维数组
import numpy as np
a = np.zeros(6) # 创建长度为6的,元素都是0一维数组
print(np.shape(a)) # np.shape(a)=(6,)
print(a.size) # size =6
  • numpy生成元素值全为1的一维数组
import numpy as np
a = np.ones(6) # 创建长度为6的,元素都是1一维数组
print(np.shape(a)) # np.shape(a)=(6,)
print(a.size) # size =6
  • numpy拼接
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
a = np.append(a, b) # a = [1, 2, 3, 4, 5, 6]

2. numpy的输出

  • numpy输出某一行
import numpy as np
data=np.arange(9).reshape(3,3)
print(data[0]) # 输出第一行
  • numpy输出某一列
import numpy as np
data=np.arange(9).reshape(3,3)
print(data[:, 0]) # 输出第一列

3. numpy返回array中元素的index

  • numpy利用argwhere()函数来实现
import numpy as np
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 1]])
target = 1
target_index = np.argwhere(data == target)
print(target_index)  # 返回一个下标矩阵
print(np.shape(target_index))  # np.shape(target_index)=(2,2)
  • numpy利用where()函数来实现
# data 的类型不仅可以是array,也可以是Series
import numpy as np
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
index1 = np.where(data > 3)
print(index1[0])  # [3 4 5 6 7 8]
index2 = np.where((data > 3) & (data < 7))
print(index2[0])  # [3 4 5]
index3 = np.where((data > 3) & (data < 7), 1, 0)
print(index3)  # [0 0 0 1 1 1 0 0 0]

4. numpy实现矩阵堆叠

  • numpy利用np.hstack((a,b))实现水平堆叠
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([[10,11,12],[14,15,16],[17,18,19]])

#注意水平堆叠,输入的数组对应处需要相同的维度(列数相同)
c = np.hstack((a,b))
print(c)
# 输出结果
# [[ 1  2  3 10 11 12]
#  [ 4  5  6 14 15 16]
#  [ 7  8  9 17 18 19]]
  • numpy利用np.vstack((a,b))实现垂直堆叠
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([[10,11,12],[14,15,16],[17,18,19]])

#注意垂直堆叠,输入的数组对应处需要相同的维度(行数相同)
c = np.vstack((a,b))
print(c)
# 输出结果
# [[ 1  2  3]
#  [ 4  5  6]
#  [ 7  8  9]
#  [10 11 12]
#  [14 15 16]
#  [17 18 19]]

5. 利用Counter统计numpy向量中的每个元素出现的次数

from collections import Counter
import numpy
l = np.array([1, 1, 2, 3, 3, 3])
count = Counter(l)   #类型: 
count_dict = dict(count)   #类型: 
print(count_dict)

6. 利用numpy对矩阵进行运算

  • 元素相乘
import numpy as np

l = np.array([[1,2], [3,4]])
print(np.multiply(a,b))
# 1  4
# 9 16
  • 矩阵相乘
# np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b)
import numpy as np

l = np.array([[1,2], [3,4]])
print(l)
print(np.dot(a, a))
# 7  10
# 15 22
  • 求逆矩阵
import numpy as np
from numpy.linalg import *

l = np.array([[1,2], [3,4]])
print(l)
print(inv(l))
  • 求转置矩阵
import numpy as np
from numpy.linalg import *

l = np.array([[1,2], [3,4]])
print(l)
print(l.transpose())
  • 求矩阵的行列式
import numpy as np
from numpy.linalg import *

l = np.array([[1,2], [3,4]])
print(l)
print(det(l))
  • 求矩阵的特征值和特征向量
import numpy as np
from numpy.linalg import *

l = np.array([[1,2], [3,4]])
print(l)
print(eig(l))
  • 求线性方程组
import numpy as np
from numpy.linalg import *

l = np.array([[1,2], [3,4]])
y = np.array([[6],[8]])
print(l)
print(solve(l,y))
# 1X+2Y=6
# 3X+4Y=8

你可能感兴趣的:(Python)