基本模块
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)