课程基础1:Numpy Tutorial

Array

创建矩阵:

import numpy as np

Array1 = np.array([1,2,3]) #创建一维矩阵
Array2 = np.array([[4,5,6],[7,8,9]]) #创建二维矩阵

特殊矩阵的创建:

import numpy as np

a = np.zeros((2,2)) #创建一个零矩阵
b = np.ones((2,2))  #创建所有元素为1的矩阵
c = np.full((3,3),8) #创建一个矩阵,元素使用指定的常量进行填充
d = np.eye((2))  #创建一个单位矩阵
e = np.random.random((2,2))  #创建一个随机数填充的矩阵

Array indexing

Slice

import numpy as np

Array = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
#Array:
#[[1,2,3,4]
#[5,6,7,8]
#[9,10,11,12]]
b = Array[:2,1:3]  #前两行,1-2列
#b:
#[[2,3]
#[6,7]]

#修改slice获取的矩阵将导致原矩阵修改,但是需要注意索引的对应关系
b[0,0] = 99 #现在Array[0,1]也变成99

使用整型索引和Slice时将会导致矩阵降秩:

import numpy as np

Array = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
#Array:
#[[1,2,3,4]
#[5,6,7,8]
#[9,10,11,12]]
b = Array[1:2,1:3]   #b是一个1x2的矩阵
#b:[[6],[3]]
c = Array[1,1:3]    #c是一个含有两个元素的行向量
#c:[6,7]

整型索引

import numpy as np

Array = np.array([[1,2],[3,4],[5,6]])
#Array:
#[[1,2]
#[3,4]
#[5,6]]
b = Array[[0,1,2],[0,1,0]] #b:[1,4,5]
c = np.array(Array[[0,1,2],[0,1,0]]) #c:[1,4,5]
d = Array[[0,0],[1,1]] #d:[2,2]
e = np.array(Array[[0,0],[1,1]]) #e:[2,2]

从每行选取一个数据的快速实现方式:

import numpy as np

Array = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
#Array:
#[[1,2,3]
#[4,5,6]
#[7,8,9]
#[10,11,12]]

b = np.array([0,2,0,1])
d = np.array(Array[np.arange(4),b]) #d:[1,6,7,11]

DateTypes

import numpy as np

x = np.array([1,2])
print(x.dtype)  #int32
y = np.array([1.0,2.0])
print(y.dtype) #float32
z= np.array([1,2],dtype=np.int64)
print(z.dtype) #int64

Array math

对应元素之间的运算:

import numpy as np

x = np.array([[1,2],[3,4]],dtype=np.int64)
y = np.array([[5,6],[7,8]],dtype=np.int64)

z1 = np.add(x,y) #等价于x+y,对应元素相加
z2 = np.subtract(x,y) #等价于x-y,对应元素相减
z3 = np.multiply(x,y) #等价于x*y,对应元素相乘
z4 = np.divide(x,y)  #等价于x/y,对应元素相除
z5 = np.sqrt(x) #开平方操作

矩阵相乘:

import numpy as np

x = np.array([[1,2],[3,4]],dtype=np.int64)
y = np.array([[5,6],[7,8]],dtype=np.int64)

v = np.array([9,10])
w = np.array([11,12])

#向量内积
z1 = np.dot(v,w) #等价于v.dot(w)

#向量和矩阵之间的内积,结果是一维的
z2 = np.dot(x,v) #等价于x.dot(v),z2:[29 67]

#矩阵相乘
z3 = np.dot(x,y)

sum计算:

import numpy as np

x = np.array([[1,2],[3,4]])
sum1 = np.sum(x) #sum1 = 10
sumx = np.sum(x,axis=1) #axis = 1 表示行,sumx:[3 7]
sumy = np.sum(x,axis=0) #axis = 0 表示列,sumx:[4 6]

转置:

import numpy as np

x = np.array([[1,2],[3,4]])
y = x.T

#一维矩阵转置没有效果
v = np.array([1,2,3]) 
w = v.T #w还是[1,2,3]

Broadcasting

import numpy as np

x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
v = np.array([1,0,1])
z = x + v
#z:
#[[ 2  2  4]
# [ 5  5  7]
#[ 8  8 10]
#[11 11 13]]

#矩阵加上一个常数
x = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
y = 5
z2 = x+y
#z2:
#[[ 6  7  8]
# [ 9 10 11]
# [12 13 14]
# [15 16 17]]

 

转载于:https://www.cnblogs.com/xiaojianliu/articles/9960575.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值