numpy模块

专门数组(矩阵)的运算

lis1=[1,2,3]
lis2=[4,5,6]

如果我们想让lis1 * lis2得到一个结果为lis_res = [4, 10, 18],非常复杂。

lis=[]
for i in range(len(lis1)):
    lis.append(lis1[i]*lis2[i])
print(lis)

使用numpy模块

import numpy as np
arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
print(arr1*arr2)

numpy数组

import numpy as np
arr=np.array([1,2,3])
print(arr)   #一维numpy数组
import numpy as np
arr2=np.array([[1,2,3],[4,5,6]])
print(arr2)  #二维numpy数组(一般就是二维)

三维的不使用numpy模块,使用tensorflow/pytorch模块

属性

T 数组的转置(对高维数组而言)
dtype 数组元素的数据类型
size 数组元素的个数
ndim 数组的维数
shape 数组的维度大小(以元组形式)
astype 类型转换

import numpy as np
arr2=np.array([[1,2,3],[4,5,6]])
print(arr2.T)  #行与列互换
print(arr2.dtype) #int32
print(arr2.astype(np.float64).dtype)  #float64
print(arr2.size)  #6
print(arr2.shape)  #(2,3)
print(arr2.ndim)  #2

切片

import numpy as np
lis=[1,2,3]
# print(lis[:])
arr2=np.array([[1,2,3],[4,5,6]])
# print(arr2)
print(arr2[:,:])  #取所有
print(arr2[0:1,:]) #取第一行所有
print(arr2[0:1,0:1]) #取第一行第一列 
print(arr2[0,:]) #[1 2 3]
print(arr2[0,0],type(arr2[0,0]))  #1  <class 'numpy.int32'>
print(arr2[0,[0,2]])  #[1 3]
print(arr2[0,0]+1)   #2

合并

import numpy as np
arr1=np.array([[1,2,3],[4,5,6]])
arr2=np.array([[7,8,9],[10,11,12]])
print(np.hstack((arr1,arr2)))#行合并
print(np.vstack((arr1,arr2)))#列合并
print(np.concatenate((arr1,arr2)))#默认列合并
print(np.concatenate((arr1,arr2),axis=0))#1表示行,0表示列

通过函数创建numpy数组

import numpy as np
arr1=np.array([[1,2,3],[4,5,6]])
print(np.zeros((5,5)))#5行5列的0
print(np.ones((5,5))*2)#5行5列的2
print(np.eye(5)) #eye创建单位矩阵
print(np.arange(1,10,2))  # 生成一维的
print(np.linspace(0,20,10)) # 平均分成10份  # 构造x坐标轴的值
arr = np.zeros((5, 5))
print(arr.reshape((1,25)))  #重塑形状

数组运算

import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
print(arr1)
arr2 = np.array([[7, 8, 9], [10, 11, 12]])  # 可变数据类型
print(arr2)

# +-*/ // % **
print(arr1*arr2)
print(arr1+arr2)

运算函数

import numpy as np
# 运算函数
arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
print(arr1)

print(np.sin(arr1)) #正弦
print(np.cos(arr1)) #余弦

print(np.sqrt(arr1)) #开根号
print(np.exp(arr1))  #取指数函数

额外补充

import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
print(arr1)
arr2 = np.array([[7, 8, 9], [10, 11, 12]])  # 可变数据类型
print(arr2)

print(arr1.T)
print(arr1.transpose())

# m*n * n*m = m*m
print(np.dot(arr1,arr2.T))

# 求逆
arr1 = np.array([[1, 2, 3], [4, 5, 6], [9, 8, 9]])
print(np.linalg.inv(arr1))

numpy的数学方法

import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])  # 可变数据类型
print(arr1)
print(arr1.var())
print(arr1.std())
print(arr1.mean())


print(arr1.cumsum())  # 累加和
sum 求和
cumsum 累加求和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引
sort 排序

numpy随机数(了解)

print(np.random.rand(3,4)) 产生均匀分布的随机数

print(np.random.randint(1,10,(3,4))) # 最小值1,最大值10,3*4 产生随机整数

print(np.random.choice([1,2,3,4,5],3)) #从arr中随机选择指定数据

print(arr1)
np.random.shuffle(arr1) 
print(arr1)

重点

np.random.seed(int(time.time()))
np.random.seed(1)
arr1 = np.random.rand(3,4)  # 可变数据类型
print(arr1)

rs = np.random.RandomState(1)
print(rs.rand(3,4))

posted on 2019-08-19 15:46  黑糖A  阅读(88)  评论(0编辑  收藏  举报