#numpy库的基本使用
import numpy as np
dir(np) #查看库里面的函数
arr1 = np.array([1,2,3,4,5])
np.ndim(arr1) #查看数组的维数(int)
arr2 = np.array(([1,2,3,4],[5,6,7,8]))
np.ndim(arr2)
print(arr2.shape)
arr2.shape = (4,2) #修改数组的维数
print(arr2.shape)
print(arr2.size) #查看数组的个数
print(arr2.dtype) #查看数组的类型
#使用arange函数创建数组:
np.arange(0,1,0.1) #(起始值,结束值,步长)
#等差
np.linspace(0,1,10) #(起始值,结束值,元素个数)
#创建等比数列
np.logspace(0,2,20) #(起始值,结束值,元素个数)
#创建全是0的矩阵
np.zeros((5,5))
#创建单位矩阵
np.eye((3))
np.identity(3)
#指定矩阵的对角值
np.diag([1,2,3,4,5,6])
#创建全是1的矩阵
np.ones((5,2))
#创建数据类型
df = np.dtype([("name",np.str_,40),("numitens",np.int64),("price",np.float64)])
print(df["name"])
print(np.dtype(df["name"]))
#创建数组对象
d = np.dtype([('name',np.str_,40),('shuliang',np.int64),
('price',np.float64)])
data = np.array([('a',45,4.12),('b',25.6,3.14)],dtype=d)
print(data)
#生成服从正态分布的随机数
np.random.randn(2,5) #生成2行5列的随机数
np.random.randint(2,10,size = [2,5]) #生成2行5列的随机整数(大于2,小于10)
np.random.uniform() #生成一个[0,1)中分布的随机数
np.random.uniform(5,10) #生成[5,10)中的随机数
np.random.uniform(2,5,11) #11个[2,5)的随机数
#随机种子
np.random.seed(1234)
np.random.randint(1,10)
#random模块
import random
random.normalvariate(2,2) #生成高斯分布的随机数
random.gammavariate(10,1) #生成gamma分布的随机数
#索引
arr = np.arange(10)
print(arr[0])
print(arr[3:5])
print(arr[:5])
print(arr[-1])
arr[2:4] = 100,101
print(arr[1:-1:2]) #表示每隔两个元素取一个元素
print(arr[5:1:-2]) #步长为负数时,开始下标必须大于结束下标
#多维数组的索引
arr = np.array([[1,2,3,5,6],[2,3,4,5,4],[4,5,3,4,5],[2,5,6,7,8]])
print(arr[0,3:5]) #返回第0行中第三列和第四列的元素
print(arr[1:,2:]) #返回第2和第3行中第3~5列的元素
print(arr[:,2]) #返回第2列的元素
#条件索引
arr = np.array([1,3,4,6,7,8])
print(arr[arr > 5])
arr1 = np.array([[2,3,4],[6,7,8]])
print(arr1[:,2])
print(arr1[0,:] > 3) #返回的是布尔类型值
a = arr1[0,:] > 3
type(a)
print(arr1[arr1>3])
arr2=np.array([1,13,3,1,13,12,3,5,14,3,6,1,2])
print(np.where(arr2 == 3)) #返回3的位置
arr3 = np.arange(len(arr2)) #生成和arr相同长度的数组
arr4 = arr3[arr2 > 3]
for i in range(len(arr4)):
if arr4[i] < 100:
print (arr4[i])
#更改维度
print(arr.shape)
arr.reshape(2,10)
#更换数组的形态
arr.ravel() #展平
arr.flatten() #横向展平
arr.flatten('F') #纵向展平
#组合数组
arr1 = np.array([[1,2,3],[4,5,6],[7,8,9],[12,13,14]])
arr2 = np.array([[6,7,8],[7,8,9],[10,11,12],[14,15,16]])
print(arr1)
print(arr2)
np.hstack((arr1,arr2)) #数组横向组合
np.vstack((arr1,arr2)) #纵向组合
np.concatenate((arr1,arr2),axis = 1) #数组横向组合
np.concatenate((arr1,arr2),axis=0) #数组纵向组合
#切割数组
print(arr1)
np.split(arr1,3,axis = 1) #实现数组分割
np.split(arr1,2,axis = 0) #纵向分割
#矩阵
matr1 = np.mat("1,2,3;4,5,6;,7,8,9")
matr2 = np.matrix([[123],[456],[789]])
np.bmat("arr1,arr2;arr1,arr2") #数组合成成矩阵
#矩阵的运算 + - * /
matr1 + matr2
#矩阵对应元素的相乘
print(np.multiarray(matr1,matr2))
# 矩阵特有的属性
print(matr1.T) #返回自身的转置
print(matr1.H) #返回自身的共轭转置
print(matr2.I) #返回自身矩阵的逆矩阵