numpy库的基本操作

基本模块

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

参数 说明
object 任何暴露数组接口方法的对象都会返回一个数组或任何(嵌套)序列
dtype 数组的所需数据类型,可选
copy 可选,默认为true,对象是否被复制。
order C(按行)、F(按列)或A(任意,默认)
subok 默认情况下,返回的数组被强制为基类数组。 如果为true,则返回子类。
ndimin 指定返回数组的最小维数。
import numpy as np 

#随便取5个数  疑问:一定是0吗?
l1=np.empty(5)
print(l1)
print("类型是:",type(l1))#查看一下类型 是ndarray


#给np一个list(可迭代的数据类型就行)
lis=[1,2,3,4,5]
l2=np.array(lis)
print(l2)


#给np一个二维list
lis=[[1,2,3],[4,5,6],[7,8,9]]
l3=np.array(lis)
print(l3)


#zeros 和 ones
l4=np.zeros(5)
l5=np.ones(5)
print(l4)
print(l5)


#arange
l6=np.arange(0,10,0.1)
print(l6)


#ndarray的数据类型
#所支持的数据类型包括整数、浮点数、复数、布尔值、字符串或是普通的 Python 对象(object)。
#在创建 ndarray 数组的时候,如未显示指定类型,它会尝试推断出一个合适的数据类型。
l7=np.array([0.3,1.9,35.43],dtype=np.int32)
print(l7)
l8=np.array([0.3,1.9,35.43],dtype=np.float32)
print(l8)



#强制类型转换
l9=np.arange(0,10,0.1)
l9=l9.astype(np.int32)
print(l9)
#如果字符串全是数字 则可以直接转为数字
l10=np.arange(0,1,0.001)
l10=l10.astype(np.string_)
print(l10.dtype)
#print(l10)
l11=l10.astype(np.float32)
print(l11.dtype)
#print(l11)
#astype 会创建一份新的数组,即便是指定为同类型也依然如此   ?还没有测试



#可以直接对ndarray运算 和list不同的是 其实每个元素的运算 而不是list中长度的增加
ll1=[1,2,3]
print(ll1)
ll2=ll1*2
print(ll2)
l12=np.array(ll1)
print(l12)
l12*=2
print(l12)


#np.mat  (不是拷贝  是一个内存) 和 np.matrix不同
#矩阵操作
lis=[[1,2,3],[4,5,6],[7,8,9]]
l13=np.array(lis)
l14=np.array([1,2,3])
l15=l14*l13
print(l15)#每一列乘上对应元素  而不是矩阵乘法
l16=l13*l14
print(l16)#每一列乘上对应元素  而不是矩阵乘法



l17=np.mat(lis)
l18=np.mat([1,2,3])
l19=l18*l17
print('\n',l19)# 1*3   是矩阵乘法


#修改
#mat
lis=[1,2,3]
l20=np.array(lis)
l21=np.mat(l20)
print("l20:",l20)
print("l21:",l21)
l20[0]=100#只修改l20  
print("l20:",l20)
print("l21:",l21)  
#l21也会改变 不是copy 

print('')

#matrix
l20=np.array(lis)
l21=np.matrix(l20)
print("l20:",l20)
print("l21:",l21)
l20[0]=100#只修改l20  
print("l20:",l20)
print("l21:",l21)
#l21不会改变  即是copy



random模块

import numpy as np 
#rand
a=np.random.rand(2,10)#2*10个随机数    在0~1之间
print(a)


#randn
b=np.random.randn(2,10)#2*10个随机数    标准正态分布N(0,1)
print(b)
c=np.random.randn(1000)#1000个随机数    标准正态分布
print(c)


#randint
d=np.random.randint(3,6,size=(3,10))# 3~5 int 填充
print(d)
#若high=None,则取值区间变为[0,low) 
d=np.random.randint(10,size=(3,10))# 0~9 int 填充
print(d)


#random_integers  与randint稍有区别
d=np.random.random_integers(3,6,size=(3,10))# 3~6 int 填充
print(d)
#若high=None,则取值区间变为[1,low] 
d=np.random.random_integers(10,size=(3,10))# 1~10 int 填充
print(d)



#choice
a=np.array([1,2,3,4,5])
ans=np.random.choice(a,3,p=[0.01,0.01,0.01,0.01,0.96])#选择3个  每一次选择 概率如上分布
#a and p must have same size    and      probabilities  sum to 1
print(ans)






你可能感兴趣的:(Python)