ch2 科学计算库Numpy2

本部分主要涉及Numpy中涉及的矩阵运算。

1.判断数组/矩阵中是否存在某元素

vector = numpy.array([5,10,15,20])
vector == 10
#array([False,True,False,False],dtype=bool)

直观的问题是现在只是知道了其是否存在?那是否能拿到这一项呢?

即是否能通过返回的bool值当做索引?答案的肯定的。  如下方的第四行代码

vector = numpy.array([5,10,15,20])
equal_to_ten = (vector == 10)
print equal_to_ten
#[False True False False]
print(vector[equal_to_ten])
#[10]  bool类型的一个同长度的数组也可以当做索引

判断条件之间的逻辑运算

与运算

vector = numpy.array([5,10,15,20])
euqal_to_ten_and_five = (vector == 10) & (vector == 5)
print euqal_to_ten_and_five
#[False False False False]

或运算

vector = numpy.array([5,10,15,20])
euqal_to_ten_or_five = (vector == 10) | (vector == 5)
print euqal_to_ten_or_five
#[True True False False]

vector[euqal_to_ten_or_five] = 50
print(vector)
#[50 50 15 20]

2.数据类型变化

利用array.astype函数即可

vector = numpy.array(["1","2","3"])
#S1
print(vector.dtype)
#['1' '2' '3']
print(vector)

vector = vector.astype(float)
#float64
print(vector.dtype)
#[1. 2. 3.]
print(vector)

3.极值、求和等

vector = numpy.array([5,10,15,20])
vector.min()
#内置的一些属性  了解更多的话  print (help(numpy.array))

matrix = numpy.array([
                    [5,10,15],
                    [20,25,30],
                    [35,40,45]
                    ])
#横向加  按行求和
matrix.sum(axis = 1)  
#竖向加  按列求和
matrix.sum(axis = 0)

4.矩阵初始化

4.1 arrange  reshape

import numpy as np
print (np.arrange(15))
#[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
a = np.arrange(15).reshape(3,5)
a
#array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])
a.shape
#(3,5)
a.ndim
#2  指array的维度
a.dtype.name
#int32
a.size
#15
  1. arrange(n)  初始化一个大小为n  元素为0 - n-1的向量
  2. reshape函数
  3. shape ndim size 
#array([10,15,20,25])
np.arrange(10,30,5)

 除了这种指定间距的方式外,还有一种指定在某一范围上想取的数的个数从而通过平均间距进行取值的方式。  linsapce  值得注意的是此处是左闭右闭的区间

from numpy import pi
#在左闭右闭的区间内按平均间距取100个数
np.linspace(0,2*pi,100)

4.2 zeros ones

#注意传来的是一个元组的格式  float类型
np.zeros((3,4))
#int 类型
np.ones((2,3,4),dtype=np.int32)

4.3 random

用途:后续在机器学习过程中需要进行权重参数的初始化,生成随机数  区间为[-1,1]

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

5.矩阵元素的数学运算

a = np.linspace(20,50,4)
#[20,30,40,50]
b= = np.arrange(4)
#[0,1,2,3]
c=a-b
c=c-1
#平方
b**2
import numpy as np
B = np.arrange(3)
#e的指数
np.exp(B)
#开根号
np.sqrt(B)

6.矩阵运算

6.1 矩阵乘法 

A = np.array([
            [1,1],
            [0,1]
            ])
B = np.array([
            [2,0],
            [3,4]
            ])
#*乘表示对应位置进行相乘  而非传统的矩阵运算
A*B
#矩阵乘法的两种表达方式
A.dot(B)
np.dot(A,B)

6.2 矩阵形状

a = np.floor(10*np.random.random((3,4)))

a.ravel()

a.shape = (6,2)

print(a.T)
  1. 首先利用random模块中的random函数产生一个3*4的矩阵,取值在-1到1之间,随后乘10,floor函数向下取整
  2. 将矩阵拉成向量  ravel函数
  3. 修改为6*2矩阵
  4. a的转置矩阵

6.3 矩阵拼接

a = np.floor(10*np.random.random((2,2)))
b = np.floor(10*np.random.random((2,2)))
#横向拼接  可以理解成同一样本的不同特征保存在了不同的矩阵中  值得注意的是传的也是元组
np.hstack((a,b))
#纵向拼接  相当于多个样本的拼接
np.vstack((a,b))

6.4  矩阵分割

a = np.floor(10*np.random.random(2,12))
#[
#[8 3 3 5 9 0 1 1 6 2 7 2],
#[7 1 9 7 5 2 5 7 0 3 1 1]
#]

#按行分三份切分  每一份为2*4
np.hsplit(a,3)
#按行指定切分  左闭右开  第一行5那里切开
np.hsplit(a,(3,4))

#按列切分  按列切分为两份
np.vsplit(a,2)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值