Bootstrap

numpy的基础用法

numpy的基础用法一

import numpy
import random

data = numpy.array([1,2,3])
data.max()
print(data.max())

print(numpy.ones(3))
print(numpy.zeros(3))
print(numpy.random.random(3))


data2 = numpy.array([1,2])
ones = numpy.ones(2)
print(ones)


print(data2 + ones)

print(data2*1.6)


print(data[0])
print(data[2])
print(data[1])
print(data[0:2])
print(data[1:3])
print(data[0:3])



print(data.sum())

print(numpy.ones((3,2)))

print(numpy.zeros((3,2)))



data3 =numpy.array([[1,2],[3,4],[5,6]])

print(data3)

print(data3.max(axis=1))

print(data3.max(axis=0))

data4 = numpy.array([[1],[2],[3],[4],[5],[6]])

print(data4)
print(data4.reshape(2,3))
print(data4.reshape(3,2))

'''numpy广播机制'''
'''
c = numpy.array([[1],
                 [2],
                 [3],
                 [4],
                 [5],
                 [6],
                 [7],
                 [8],
                 [9],
                 [10],
                 [11],
                 [12]
                 ])

c = numpy.arange(1,13).reshape(2,6)
print(c)
print(numpy.hsplit(c,3))
'''
'''
c1 = numpy.array([[1],
                 [2],
                 [3],
                 [4],
                 [5],
                 [6],
                 [7],
                 [8],
                 [9],
                 [10],
                 [11],
                 [12],
                 ])
c1 = numpy.array(1,13).reshape(6,2)
print(numpy.vsplit(c1,3))

'''
'''
a = numpy.array((1,2,3))
b = numpy.array((2,3,4))
e = numpy.dstack((a,b))
print(e)
print(numpy.dsplit(e,2))
'''

numpy的基础用法二

import numpy as np


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

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

print(a+b)


c = np.array([1,1,1,1])
print(c+b)


w = np.array([[1,1,1],[2,2,2]])
print(w)
print(w[:,1])#列
print(w[1])#行

w[:,1] = np.array([5,5])#替换
print(w)


'''删除 delete'''
matrix = [[1,2,3,4],
          [5,6,7,8],
          [9,10,11,12],
          ]

p1 = np.delete(matrix,1,0)#第一个是要删除的矩阵,第二个是要处理的位置x(行或列),第三个是为了判断删除的是行还是列,如果输入是None则矩阵会安行展开然后按照处理的位置删除第x的位置的数,如果输入是零则删除的是行,如果输入的是1则删除的是列
print(p1)

p2 = np.delete(matrix,1,1)
print(p2)

p3 = np.delete(matrix,0,1)
print(p3)

p4 = np.delete(matrix,1,None)
print(p4)

p5 = np.delete(matrix,[0,1],1)#删除多行
print(p5)


'''添加 insert'''

matrix1 = [[1,2,3,4],
          [5,6,7,8],
          [9,10,11,12],
          ]

q1 = np.insert(matrix1,1,[1,1,1,1],0)#与删除基本同理,只不过添加了一个需要插入的值
print(q1)

q2 = np.insert(matrix1,0,[1,1,1],1)
print(q2)

q3 = np.insert(matrix1,0,[1,1,1],None)
print(q3)


'''append 尾部添加'''


matrix3 = [[1,2,3,4],
          [5,6,7,8],
          [9,10,11,12],
          ]


m1 = np.append(matrix3,[[1,1,1,1]],0)#添加行是用[[1,1,1,1]]
print(m1)

m2 = np.append(matrix3,[[1],[1],[1]],1)#添加列是[[1],[1],[1]]
print(m2)

m3 = np.append(matrix3,[1,1,1,1],None)#拉平添加时[1,1,1,1]/[[1,1,1,1]]均可
print(m3)




'''random.choice,随机选取数'''


a1 = np.random.choice(7,5)#从0-7中选取5个成为一维数组
print(a1)

a2 = np.random.choice([0,1,2,3,4,5,6,7],5)#从给与的列表中随机抽5个
print(a2)

a3 = np.random.choice(np.array([0,1,2,3,4,5,6,7]),5)#array一样适用
print(a3)

a4 = np.random.choice([0,1,2,3,4,5,6],5,False)#在后面添加False就可以使输出的不重复
print(a4)
print("  xxxxx  ")
a5 = np.random.choice(np.array([0,1,2,3,4,5,6]),5,[0.1,0.1,0.1,0.1,0.1,0.1,0.4])#在后面直接添加概率可以控制选项
print(a5)

'''argmax,返回最大索引值'''


a = np.array([[1,1,1],[2,2,2],[0,3,6]])
b1 = np.nanargmax(a)#将矩阵拉平然后得到最大值,初始为0所以b1是8(平铺开最大值的位数)
print(b1)

b2 = np.nanargmax(a,0)#当axis = 0时按列取最大值的索引(就是最大值所在的列数)
print(b2)

b3 = np.nanargmax(a,1)#当axis = 1时按行取最大值的索引(就是最大值所在的行数)
print(b3)



''' linspace 均匀分隔一段数'''



y1 = np.linspace(-10.0,10.0)#不加后面具体分割几个默认50个
print(y1)

y2 = np.linspace(1,10,10)
print(y2)

y3 = np.linspace(1,10,6,True)#包括尾部
print(y3)

y4 = np.linspace(1,10,6,False)#不包括尾部
print(y4)

y5 = np.linspace(1,10,6,True,True)#最后一个是是否显示每一个间隔具体的数
print(y5)


print(" ###############################################3333  ")

'''拉平操作'''


x = np.array([[1,2,3],[4,5,6],[1,2,3]])
print(x.flatten())#拉平操作是返回的copy值(按行拉平)
print(x.ravel())#这个返回的是实际的值
print("#############")
print(x.ravel('F'))#返回的是按列拉平
print(x.flatten('F'))#相同

print("##########")
x.flatten()[1] = 20#这个不行
print(x.flatten())
x.ravel()[1] = 20#返回实际的值可以改变
print(x.ravel())


print(x.reshape(1,-1))#这个依旧是二维



print("#############")

'''数组转行向量,转列向量,变成二维'''

x2 = np.array([1,2,3,4,5,6,7])
#第一种
print(x2[None,:])#变成行向量
print(x2[:,None])#变成列向量
#第二种
print(x2[np.newaxis,:])#用法与None相同
print(x2[:,np.newaxis])


print("######################")
'''计算元素乘积np。prod'''

x3 = np.array([[1,2,3],[2,3,4]])
print(np.prod(x3))
print(np.prod(x3,1))#每一行的乘积
print(np.prod(x3,0))#每一列的乘积
print("##################")



'''把矩阵大于或小于N的元素至于M'''


x4 = np.array([[1,2,3],[-3,2,4],[5,-2,9]])

y1 = np.maximum(0,x4)#将x4中小于零的变成零
print(y1)

y2 = np.minimum(0,x4)#将x4中大于零的变成零
print(y2)


'''copy问题'''

x5 = x4.copy()#相当于开辟新地址x4不变
x5[x5>0] = 0
print(x5)

x6 = x4.copy()
x6[x6<0] = 0
print(x6)

print("###############")

x7 = x4#相当于没开辟新地址所以x4跟着x7一起改变
x7[x7>0] = 0
print(x7)
print(x4)

x8 = x4[2]#取x4的第三行
x8[2] = 100#x8改变,x4也改变
print(x8)
print(x4)


'''   全零矩阵   无需指定大小,直接复制想要矩阵即可'''
print(np.zeros_like(x4))

'''random .rand与.randn和.randint的区别'''

n = np.random.rand(3,4)#随机产生浮点数
print(n)

n1 = np.random.randn(3,4)#产生正态分布的浮点数
print(n1)
print("######")
#一般的正态分布

z = np.multiply(0.1,np.random.randn(3,4)+0.5)#N = (mui,sigama 2)
print(z)
print("#####")


n2 = np.random.randint(2,9,(2,3))#在2-9之间随机生成2*3的矩阵,而且范围是前开后闭[2,9)
print(n2)
print("########")
n3 = np.random.randint(9,size=(2,3))#只给出一个时默认[0,给出的那一个数)
print(n3)


'''padding'''


A = np.arange(95,99).reshape(2,2)
np.pad(A,((3,2),(2,3)),'constant',constant_values = (0,0))
b = np.array([[[1,2],[3,4]],[[3,4],[7,8]],[[4,5],[1,2]]])
print(b)

print(np.pad(b, ((0,0),(1,1),(1,1)),'constant', constant_values = 0))


print("############")

xaa = np.empty([3,2], dtype = int)
print (xaa)


c = np.array([[1,2],[3,4]])
c.astype(np.float32)

print(c)



x = np.array([1,3,5])
y = np.array([4,6])
XX,YY = np.meshgrid(x,y)

print(XX)
print(YY)


x = np.array([[3,4,5],[1,3,4]])
y = np.array([[1,1,1],[2,2,2]])
print(np.hstack((x,y)))
print(np.vstack((x,y)))


'''numpy的取整'''

a = np.array([0.125,0.568,5.688])
print(np.round(a))
print(np.round(a,decimals = 2))
print(np.floor(a))
print(np.ceil(a))

c = np.array([1,2,5,4])
var = c[:, np.newaxis]
print(var)
varr =c[np.newaxis,:]
print(varr)





'''广播机制'''
print("@@@@@@@@@@@@@@@@@@@@@@@@@@@")

a = np.array([[1,2,3],[4,5,6]])
a = np.array([[1,2,3,6],[4,5,6,6]])
a1 = a.reshape((1,2,4))
print(a1)
b = np.array([[3,4,5,6],[1,2,3,4],[4,5,5,5]])
b1 = b.reshape((1,3,4)).transpose((1,0,2))
print(b1)


print(a1+b1)



'''交换维度进行转至'''


c = np.array([[[1,2,5],[3,4,6]],[[4,5,6],[7,8,9]]])
print(c.transpose(1,0,2))


print("########################")
'''双冒号的用法'''

a = np.array([2,2,3,4,5,5,6,7])
print(a[0::2])
print(a[::-1])
s = slice(0,7,2)
print(a[s])
;