numpy学习

numpy

1.调用

import numpy as np

2.创建数组

有数值范围的数组

range & arange

#range 输出1-10
t1=np.array(range(10)) 
#arange (,,步长)
t2=np.arange(4,10,2)

numpy学习_第1张图片

linspace

指定了范围之间的均匀间隔数量

x=np.linspace(10,20,5)
print(x)   # >>> array([10. , 12.5, 15. , 17.5, 20. ])

创建空数组

numpy.empty (它创建指定形状和dtype的未初始化数组)

a=np.empty([2,3],dtype=int,order="C")

shape 空数组的形状,整数或整数元组

dtype 所需的输出数组类型,可选

order "C"为按行的 C 风格数组,"F"为按列的 Fortran 风格数组

#其中,返回元素为随机值

numpy.zeros (返回特定大小,以 0 填充的新数组)

b=np.zeros(5)    #默认类型为float
c=np.zeros((5,),dtype=int)
d=np.zeros((3,2),dtype=int)

numpy.ones (返回特定大小,以 1 填充的新数组)

以现有数据创造数组

numpy.asarray

# numpy.asarray(a, dtype = None, order = None)
x =  [1,2,3] 
a = np.asarray(x)  
print a                       # >>> [1  2  3] 

numpy.frombuffer

numpy.frombuffer (buffer, dtype = float, count = -1, offset = 0)

count 需要读取的数据数量,默认为-1,读取所有数据

offset 需要读取的起始位置,默认为0

#numpy.frombuffer(buffer,dtype =float,count = -1,offset= 0)  
s=b"Hello World"            #data是字符串的时候,Python3默认str是  Unicode类型,所以要转成bytestring在原str前加上b
a = np.frombuffer(s, dtype =  'S1')  
print a           
# >>>array([b'H', b'e', b'l', b'l', b'o', b' ', b'W', b'o', b'r', b'l', b'd'],dtype='|S1')

3.对数据

(1)改变数据类型

t4=np.array(range(1,4),dtype="float")  #指定数据类型
t5=t4.astype("int")      #改变

numpy学习_第2张图片

(2)保留几位小数

t6=np.round(t5,2)    #保留两位小数

(3)取随机数

#产生10个0-1的随机小数
np.random.random(10)
#产生k个m-n的随机整数
np.random.randint(m,n,k)
#从序列中选择数据
np.random.choice([2,5,7,8,9,11,3])
#把序列中的数据打乱(不会参数返回值,改变的话是在原列表中修改的)
np.random.shuffle(item)

4.数组属性

返回一个包含数组维度的元组

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

调整数组大小

shape()

a.shape(3,2)
print(a)
# >>> array([[1, 2],
#            [3, 4],
#            [5, 6]])

reshape()

a.reshape(3,2)    #输出同上

a.reshape(2,1,3)   #三维数组
# >>> array([[[1, 2, 3]],
#           [[4, 5, 6]]])

返回数组维度

a.ndim()     # >>> 3

5.切片与索引

基本切片 --slice()

通过将(start,stop,step)参数提供给内置的 slice函数 来构造一个 Python slice对象。 此slice对象被传递给数组来提取数组的一部分

a=np.arange(10)
s=slice(2,7,3)         #从索引2到7,步长为3
print(a[s])            # >>> [2 5]

直接传入

将由冒号分隔的切片参数(start:stop:step)直接提供 ndarray对象,也可以获得相同的结果

b=a[2:7:3]    
print(b)               # >>> [2 5]
##########还有如下几类
c=a[8]
d=a[2:]
e=a[3:9]

对多维数组

a = np.array([[1,2,3],[3,4,5],[4,5,6]])  
print(a[1:])                 # >>>  [[3 4 5]
                             #       [4 5 6]]
###指定行列的单个元素
print(a[1][2])             # >>> 5
###返回第二列
print(a[...,1])            # >>> [2 4 5]
###返回第二行 
print(a[1])            # >>> [3 4 5]
###第二列及剩余元素
print(a[...,1:])           # >>> [[2 3]
                           #      [4 5]
                           #      [5 6]]

返回一列,还可以转置后返回行

c=a.T       #转置
print(c[2])

返回第m到n行,第p到q列的子数组

e=a[m:n+1,p:q+1]

布尔索引

当结果对象是布尔运算(例如比较运算符)的结果时,将使用此类型的高级索引

#如print 大于4的元素
x = np.array([[  0,  1,  2],[  3,  4,  5],[  6,  7,  8]])
print(x[x>4])                 #>>> [5 6 7 8]

6.数组的运算

最大值

np.max(a)

最小值

np.min(a)

求和

np.sum(a)

平均数

np.mean(a)
#对某行某列求平均值
np.max(a,axis=1)   #行
np.max(a,axis=0)    #列

也可以通过axis参数来实现对每行每列的求和、求平均值

通过索引可以找出指定的某行某列的最小、最大值等…

中位数

np.median(a)

返回数组的逐步叠加结果

np.cumsum(a)

对每行排序

np.sort(a)

7.数组合并

将a,b两个数组进行合并,可以上下合并,也可以左右合并

vstack 纵向的合并 (列数要一样)

a=np.array([0,0,0])
b=np.array([4,4,4])
print(np.vstack((a,b)))    #>>> [[0 0 0 ]
                           #     [4 4 4]]

hstack 横向合并 (行数要一样)

a=np.array([0,0])
b=np.array([4,4,4])
print(np.hstack((a,b)))      #>>> [0 0 4 4 4]

vstack 纵向的合并 (列数要一样)

a=np.array([0,0,0])
b=np.array([4,4,4])
print(np.vstack((a,b)))    #>>> [[0 0 0 ]
                           #     [4 4 4]]

hstack 横向合并 (行数要一样)

a=np.array([0,0])
b=np.array([4,4,4])
print(np.hstack((a,b)))      #>>> [0 0 4 4 4]

你可能感兴趣的:(numpy,学习,python)