python的numpy库的基本使用

#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)       #返回自身矩阵的逆矩阵

猜你喜欢

转载自blog.csdn.net/spartanfuk/article/details/81294738