numpy的学习笔记

本次笔记学习教程出自:https://cs231n.github.io/python-numpy-tutorial/

Numpy的使用:

import numpy as np

1.numpy数组的基本使用和操作:

import numpy as np

a=np.array([[1,2,3],[4,5,6]])#自定义一个Numpy数组a
print('array a is \n'+str(a)+'\n and the shape is '+str(a.shape)+'\n and the type is '+str(type(a)))
#Prints "
#array a is 
#[[1 2 3]
# [4 5 6]]
# and the shape is (2, 3)
# and the type is <class 'numpy.ndarray'>
#"

#a.shape可以得到数组a的形状
print(a[0,0],a[0,1],a[1,0])#引用数组具体元素
a[0,0]=99 #更改数组的元素值的方法和变化列表的方法一样
print(a)

#创建各种特殊矩阵/数组:
b=np.zeros((3,2))
print('b is '+str(b))
b=np.ones((2,3))
print('b is '+str(b))
b=np.full((2,2),7)
print('b is '+str(b))
b=np.eye(3)#创建单位矩阵
print('b is '+str(b))
b=np.random.random((3,1))#创建随机矩阵,但元素只是在(0,1)之间随机
print('b is '+str(b))

2.切片操作:

 
import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
b=a[:2,1:3]#切片,只取[0,2)行和[1,3)列的交集
print(a)
print(b)
c=a[1,1:3]#切出来的只是一行数字,不算是个矩阵
d=a[1:2,1:3]#切出来的是一个1*2的矩阵
print(c,c.shape)
print(d,d.shape)

a=np.array([[1,2],[3,4],[5,6]])
print(a)
print(a[[0,1,2],[0,1,0]])#输出a[0,0],a[1,1],a[2,0]
a=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
b=np.array([0,2,0,1])
print(a[np.arange(4),b])#np.arange(4)=[0.1.2.3]
print(a)
a[np.arange(4),b]+=10
print(a)

3.布尔类型索引:

 
import numpy as np
#布尔类型数组索引
a=np.array([[1,2],[3,4],[5,6]])
bool_idx=(a>3)
print(bool_idx)
#prints [[False False]
#       [False  True]
#       [ True  True]]
print(a[bool_idx]) #prints [4 5 6]

4.基本运算操作等:

 
import numpy as np
a=np.array([[1,2],[2,3]])
print(a.dtype)#显示数组的数据类型

#numpy数组的运算
b=np.array([[2,3],[4,5]])

#加法
print(a+b)
#相当于
print(np.add(a,b))

#减法
print(a-b)
#相当于
print(np.subtract(a,b))

#乘法,不是矩阵乘法
print(a*b)
print(np.multiply(a,b))

#除法
print(a/b)
print(np.divide(a,b))

#开方
print(np.sqrt(a))

#矩阵乘法
print(a.dot(b))
print(np.dot(a,b))
#prints [[10 13]
#       [16 21]]

print(b.dot(a))
print(np.dot(b,a))
#prints [[ 8 13]
#       [14 23]]

5.其他方法(sum,转置):

 
import numpy as np
print(a)
#sum运算
a=np.array([[[1,2],[3,4]],[[5,6],[7,8]]])
print(np.sum(a))#所有元素相加
print(np.sum(a,axis=0))#三维数组中的第一个向量上相加
#prints [[ 6  8]
#       [10 12]]
print(np.sum(a,axis=1))#列上相加
#prints [[ 4  6]
#       [12 14]]

print(np.sum(a,axis=2))#行上相加
#prints [[ 3  7]
#       [11 15]]

#转置矩阵
print(a.T)

6.广播,broadcasting:

 
#Broadcasting
import numpy as np
x=np.array([[1,2,3],[4,5,6],[7,8,9]])
v=np.array([1,0,1])
y=np.empty_like(x)#y=x
print(y)
for i in range(3):
    y[i,:]=x[i,:]+v
print(y)

a=np.array([1,2,3])
b=np.array([4,5])
print(np.reshape(a,(3,1))*b)
#先使得v从(3,)的shape变成(3,1),然后再和b广播变成shape为(3,2)
#prints [[ 4  5]
#       [ 8 10]
#      [12 15]]

 

posted @ 2020-08-29 13:39  SixteenTime  阅读(166)  评论(0编辑  收藏  举报