姜鹏辉的个人博客 GreyNius

【Python】numpy笔记

2020-01-04

随用随记

import numpy as np

属性查询

a1 = np.array([1,2,3,4],dtype=np.complex128)  
print(a1)  
print("数据类型",type(a1))           #打印数组数据类型  
print("数组元素数据类型:",a1.dtype) #打印数组元素数据类型  
print("数组元素总数:",a1.size)      #打印数组尺寸,即数组元素总数  
print("数组形状:",a1.shape)         #打印数组形状  
print("数组的维度数目",a1.ndim)      #打印数组的维度数目 
print("数组的行数",np.shape(a1)[0]) #打印数组的行数 
print("数组的列数",np.shape(a1)[1]) #打印数组的列数

生成

a = np.zeros(6)#创建长度为6的,元素都是0一维数组
a = np.zeros((2,3))#创建2行3列,元素都是0的二维数组
a = np.ones((2,3))#创建2行3列,元素都是1的二维数组
a = np.empty((2,3)) #创建2行3列,未初始化的二维数组
a = np.arange(6)#创建长度为6的,元素都是0一维数组array([0, 1, 2, 3, 4, 5])
a = np.arange(1,7,1)#结果与np.arange(6)一样。第一,二个参数意思是数值从1〜6,不包括7.第三个参数表步长为1.
a = np.linspace(0,10,7) # 生成首位是0,末位是10,含7个数的等差数列[  0.           1.66666667   3.33333333   5.         6.66666667  8.33333333  10.        ]
a = np.logspace(0,4,5) # 用于生成首位是10**0,末位是10**4,含5个数的等比数列。
a = np.random.randint(1, 100, (3, 3)) # 生成形状为3x3的二维整数数组

矩阵增删改查

>>> a = np.array([[1,2],[3,4],[5,6]])
>>> b = np.array([[10,20],[30,40],[50,60]])
>>> np.vstack((a,b))
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [10, 20],
       [30, 40],
       [50, 60]])
>>> np.hstack((a,b))
array([[ 1,  2, 10, 20],
       [ 3,  4, 30, 40],
       [ 5,  6, 50, 60]])

加法

>>> a = np.array([[1],[2]])
>>> a
array([[1],
       [2]])
>>> b=([[10,20,30]])#生成一个list,注意,不是np.array。
>>> b
[[10, 20, 30]]
>>> a+b
array([[11, 21, 31],
       [12, 22, 32]])
>>> c = np.array([10,20,30])
>>> c
array([10, 20, 30])
>>> c.shape
(3,)
>>> a+c
array([[11, 21, 31],
       [12, 22, 32]])


>>> a
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> a[0] # array([1, 2])
>>> a[0][1]#2
>>> a[0,1]#2
>>> b = np.arange(6)#array([0, 1, 2, 3, 4, 5])
>>> b[1:3]#右边开区间array([1, 2])
>>> b[:3]#左边默认为 0array([0, 1, 2])
>>> b[3:]#右边默认为元素个数array([3, 4, 5])
>>> b[0:4:2]#下标递增2array([0, 2])

>>> a = np.array([[1,2],[3,4],[5,6]])
>>> a[0] = [11,22]#修改第一行数组[1,2]为[11,22]。
>>> a[0][0] = 111#修改第一个元素为111,修改后,第一个元素“1”改为“111”。
 
>>> a = np.array([[1,2],[3,4],[5,6]])
>>> b = np.array([[10,20],[30,40],[50,60]])
>>> a+b #加法必须在两个相同大小的数组键间运算。
array([[11, 22],
       [33, 44],
       [55, 66]])

>>> a = np.array([[1,2],[3,4],[5,6]])
>>> np.delete(a,1,axis = 0)#删除a的第二行。
array([[1, 2],
       [5, 6]])
>>> np.delete(a,(1,2),0)#删除a的第二,三行。
array([[1, 2]])
>>> np.delete(a,1,axis = 1)#删除a的第二列。
array([[1],
       [3],
       [5]])

多维数组降为1维

.ravel()和.flatten()

a = np.array([[1,2,3],[11,22,33]])
print(a.ravel())
print(a.flatten())

输出都是

[ 1 2 3 11 22 33]

不同点ravel会修改原数组,而flatten不会

矩阵转置

a.T

矩阵乘法

a = np.mat([1,2,3])
b = np.mat([4,5,6])
ret = np.dot(a,b)

求矩阵的特征值和特征向量

a为特征值
b为特征向量

a,b = np.linalg.eig(ret)

matrix 转换为数组

arr = ret.getA()

精度控制

对ret保留小数点后两位

np.around(ret,decimals = 2)

关闭科学技术法

np.set_printoptions(suppress=True)

上一篇 论文记录

Comments

Content