python numpy详解_python numpy库详解

拓展博客:https://www.cnblogs.com/TensorSense/p/6795995.html

数组的统计函数:

>>>#sum(a,axis=None):计算和

>>>#mean(a,axis=None):计算平均值

>>>#average(a,axis=None,weights=None):加权平均数

>>>#std(a,axis=None):标准差

>>>#var(a,axis=None):方差

>>> a=np.arange(12).reshape(3,4)

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>> np.sum(a)

66

>>> np.sum(a,axis=1)

array([ 6, 22, 38])

>>> np.mean(a)

5.5

>>> np.average(a,axis=0,weights=[1,2,3])

array([ 5.33333333, 6.33333333, 7.33333333, 8.33333333])

>>> np.std(a)

3.4520525295346629

>>> np.std(a)

3.4520525295346629

>>>#------------------------------------------------------------

>>>#min(a),max(a),最小值,最大值

>>>#argmin(a),argmax(a),最小值,最大值平铺成一维的下标

>>>#unravel_index(index,shape)根据index转换成多维下标

>>>#ptp(a)最大值和最小值之差

>>>#median(a)中位数

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>> np.max(a)

11

>>> np.argmax(a)

11

>>> np.unravel_index(np.argmax(a),a.shape)

(2, 3)

>>> np.median(a)

5.5

>>> np.ptp(a)

11

数组的遍历:

import numpy as np

import matplotlib.pyplot as plt

import matplotlib

#数组元素迭代器

a=np.array([[1,2,3],[4,5,6]])

for item in a.flat:

print(item,end='')

#输出:123456

#遍历数组的每一行

for row in a:

print(row)

#输出:[1 2 3]

# [4 5 6]

#遍历数组的每一列,a.T将矩阵转置

for col in a.T:

print(col)

#输出:[1 4]

# [2 5]

# [3,6]

数组合并

import numpy as np

import matplotlib.pyplot as plt

import matplotlib

a=np.array([1,1,1])

b=np.array([2,2,2])

print(a.shape)

#给数组a增加一个行维度

print(np.shape(a[np.newaxis,:]))

print(np.shape(a[:np.newaxis]))

print(a)

print(a[np.newaxis,:])

print(a[:,np.newaxis])

#输出:(3,)

#(1, 3)

#(3,)

#[1 1 1]

#[[1 1 1]]

#[[1]

#[1]

#[1]]

#矩阵合并法一:

#verital stack,上下合并

c=np.vstack((a,b))

print(c)

#horizontal stack,左右合并

d=np.hstack((a,b))

print(d)

#输出:[[1 1 1]

#[2 2 2]]

#[1 1 1 2 2 2]

#矩阵合并法2:

A=np.array([1,1,1])[:,np.newaxis]

B=np.array([2,2,2])[:,np.newaxis]

#按照行合并

C=np.concatenate((A,B),axis=0)

print(C)

#输出:

#[[1]

#[1]

#[1]

#[2]

#[2]

#[2]]

#按照列合并

D=np.concatenate((A,B),axis=1)

print(D)

#输出:

#[[1 2]

# [1 2]

# [1 2]]

数组分割

import numpy as np

a=np.array([[1,2,3],[4,5,6],[7,8,9]])

#进行相等的分割,分别为横向分割和纵向分割

print(np.split(a,3,axis=0))

print(np.split(a,3,axis=1))

#输出:

#[array([[1, 2, 3]]), array([[4, 5, 6]]), array([[7, 8, 9]])]

#[array([[1],

# [4],

# [7]]), array([[2],

# [5],

# [8]]), array([[3],

# [6],

# [9]])]

#不相等的分割

print(np.array_split(a,2))

#输出:

#[array([[1, 2, 3],

# [4, 5, 6]]), array([[7, 8, 9]])]

#相等的分割

print(np.vsplit(a,3))

print(np.hsplit(a,3))

#输出:

#[array([[1, 2, 3]]), array([[4, 5, 6]]), array([[7, 8, 9]])]

#[array([[1],

# [4],

# [7]]), array([[2],

# [5],

# [8]]), array([[3],

# [6],

# [9]])]

numpy的随机数函数

>>>#生成在[0,1)均匀分布的浮点数

>>> np.random.rand(3,4)

array([[ 0.44374911, 0.60026154, 0.82517151, 0.40989027],

[ 0.05557479, 0.59598147, 0.33718659, 0.46382554],

[ 0.45341894, 0.89121353, 0.19335915, 0.75323229]])

>>>#标准正态分布的样本值

>>> np.random.randn(3,4)

array([[ 1.20569484, 0.59492977, -0.29785485, -0.18304835],

[-0.96979811, -0.55250456, -0.21085342, -0.1876273 ],

[ 1.05674833, -0.10866197, 0.77556511, 1.27915748]])

>>>#随机生成确定上下限的样本值,[low,high]

>>> np.random.randint(100,200,(3,4))

array([[168, 191, 121, 136],

[169, 112, 186, 118],

[109, 176, 194, 178]])

>>>#-------------------------------------------------------------------

>>>#使用相同的随机数种子,可使得产生的随机数相同

>>> np.random.seed(1)

>>> np.random.rand(1,3)

array([[ 4.17022005e-01, 7.20324493e-01, 1.14374817e-04]])

>>> np.random.rand(1,3)

array([[ 0.30233257, 0.14675589, 0.09233859]])

>>> np.random.seed(1)

>>> np.random.rand(1,3)

array([[ 4.17022005e-01, 7.20324493e-01, 1.14374817e-04]])

>>>#-------------------------------------------------------------------

>>>#在数组的列内随机排列,改变数组

>>> a=np.random.randint(100,200,(3,4))

>>> a

array([[175, 105, 179, 164],

[116, 101, 176, 171],

[106, 125, 150, 120]])

>>> np.random.shuffle(a)

>>> a

array([[175, 105, 179, 164],

[106, 125, 150, 120],

[116, 101, 176, 171]])

>>>#在数组的列内随机排列,不改变数组

>>> np.random.permutation(a)

array([[116, 101, 176, 171],

[106, 125, 150, 120],

[175, 105, 179, 164]])

>>> a

array([[175, 105, 179, 164],

[106, 125, 150, 120],

[116, 101, 176, 171]])

>>>#从一维数组中以概率p抽取元素,形成size形状新数组,replace表示是否可以重用元素,默认为False

>>> b=np.random.randint(1,10,(6,))

>>> b

array([3, 5, 8, 8, 2, 8])

>>>#越大的数,被选取的概率越大

>>> np.random.choice(b,(2,1),p=b/np.sum(b),replace=True)

array([[8],

[8]])

>>>#------------------------------------------------------------------

>>>#uniform(low,high,size):产生具有均匀分布的数组[low,high]

>>> np.random.uniform(0,10,(3,4))

array([[ 7.15970516, 8.02757504, 0.92800809, 5.18152549],

[ 8.65020252, 8.29146907, 8.29603359, 2.73049974],

[ 0.59243201, 6.7052804 , 5.93065518, 6.71654097]])

>>>#normal(loc,scale,size):产生具有正态分布的数组,loc均值,scale标准差

>>> np.random.normal(10,5,(3,4))

array([[ 3.4756938 , 8.09712482, 6.28186495, 7.81439113],

[ 7.86774954, 16.90703652, 10.49185256, 8.15271258],

[ 3.63390025, 15.07493401, 2.59470145, 8.56450053]])

>>>#poisson(lam,size):产生具有泊松分布的数组,lam随机事件发生率,size形状

numpy数组的输出显示设置

# 在输出array时,会发现中间部分有省略号,不能全部的展示array的元素,此时可以进行设置展示全部元素

np.set_printoptions(threshold=np.nan)

# 让输出的小数只保留2位小数显示

np.set_printoptions(precision=2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值