numpy

2017-12-11  本文已影响0人  贝克街的猫大哥呀

最基本用法:

import numpy as np

araay=np.array([[1,2,3],

[4,5,6],

[7,8,9]])

print(araay)

print(araay.ndim)  #维度

print(araay.shape) #几行几列

print(araay.size) #元素个数

print(araay.dtype) #元素类型

注意,np.array()括号里面,是二维的写法,如果写成,np.array([1,2,3]),这表示是一个一维数组,不是矩阵。

a = np.array([1,2,3,4.5],dtype=np.int) #设置数据元为int型,相应的还有float ,int32,int64,float32,float64

print(a)

# #如果没有dtype定义,会发现打印出来的b都有. 变成了float

b = np.zeros( (3,3),dtype=np.int64) #相应的,还有,np.ones

print(b)

# #range排序生成矩阵 参数的意思分别为 开始值 结束值 间隔值

d=np.arange(1,10,1).reshape((3,3))

print(d)

# #线性排序生成矩阵 参数的意思分别为 开始值 结束值 共几个数据

e=np.linspace(0,10,5)

print(e)

简单的加减运算 与 平方

f=np.array([10,20,30,40])

g=np.arange(4)

print(f,g)

h=f-g

print(h)

#平方 用**2

f=np.array([1,2,3,4])

print(f**2)

元素中的大小 这样简单粗暴的比较返回布尔值,这里会返回4个false

f=np.array([1,2,3,4])

print(f)

print(f>4)

NP的乘法 一种是矩阵中每个数相乘,一种就是矩阵的乘法!

m=np.array([[1,2,3],

[2,2,2]])

n=np.ones((2,3))

print(m*n)

o=np.ones((3,2))

print(m.dot(o))  #这是矩阵的乘法

生成一个随机矩阵 且生成的数值都是在0-1之间 求和,最值

g=np.random.random((3,2))

print(g)

print(np.max(g))

print(np.min(g))

print(np.sum(g))

print(np.max(g,axis=0))  #aixs表示维度,0是列,1是行 这表示列的最大值 故每一列,都会返回一个值

求最值索引以及平均值! 平均值为mean,arange表示2-14之间形成一个有12个元素的矩阵

p=np.arange(2,14).reshape(3,4)

print(p)

print(np.argmax(p))

print(np.argmin(p))

print(np.mean(p))

print(np.cumsum(p))  #表示累加,有点像fblg数列 ,第n个位置的值=前n个数的和

排序 转置 clip意思是,将矩阵中,所有小于3,大于9的数,都置为3或者9. 只保留中间的数

p=np.arange(13,1,-1).reshape(3,4)

print(p)

print(np.sort(p))  #只是进行每一行,行内的排序

print(p.T) #转置

print(np.clip(p,3,9))

print(np.mean(p,axis=0))  #表示每列的平均数

索引

a=np.arange(3,15).reshape((3,4))

print(a)

print(a[0]) #表示第0行

print(a[0,:]) #也可以用:来表示所有,这里就是表示,所有列

print(a[0,1:3]) #表示第0行,第1列,第2列的元素输出

for循环

a=np.arange(3,15).reshape((3,4))

print(a)

for each in a:  #默认是行,故这里每一个each就是每一行的集合

print(each)

for each in a.T:  #如果要输出列的话,就直接用转置就可以了!

print(each)

for each in a.flat:  #每个元素,逐个输出

print(each)

矩阵合并!

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

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

print(np.vstack((a,b)))  #vstack表示vertical stack 垂直

print(np.hstack((a,b)))  #同理,这就是水平堆积

矩阵拆分!

a=np.arange(3,19).reshape(4,4)

print(a)

print(np.split(a,2,axis=0))  #按行来拆分 这里0表示行了

深浅拷贝  跟C语言

a=np.arange(1,5)

print(a)

b=a    #浅拷贝,就是说,内存地址也一并拷贝过去了

print(b is a)

a[0]=8

print(b)

c=a.copy()  #只拷贝值,不拷贝内存地址! 就是说,C有一块新的内存地址

a[0]=20

print(a)

print(c)

上一篇 下一篇

猜你喜欢

热点阅读