lect01_codes02_numpy

这篇博客主要介绍了Python机器学习中Numpy库的基础操作,包括创建Array、Array的操作、索引与切片以及如何遍历Array,旨在帮助读者掌握Numpy的向量化计算。
摘要由CSDN通过智能技术生成

PythonML

purpose:学习Numpy的基础操作


Numpy及向量化

import numpy as np

1.1创建Array

my_list=[1,2,3]
x=np.array(my_list)
print('列表:',my_list)
print('Array:',x)
列表: [1, 2, 3]
Array: [1 2 3]
x.shape
(3,)
#维度
x.ndim
1
np.array([1,2,3,])-np.array([4,5,6])
array([-3, -3, -3])
#二维数组
m=np.array([[1,2,3],[4,5,6]])
print(m)
print('shape:',m.shape)
[[1 2 3]
 [4 5 6]]
shape: (2, 3)
#生成数组
n=np.arange(0,30,2)
print(n)
[ 0  2  4  6  8 10 12 14 16 18 20 22 24 26 28]
#3x5
n=n.reshape(3,5)
print(n)
[[ 0  2  4  6  8]
 [10 12 14 16 18]
 [20 22 24 26 28]]
print('one:\n',np.ones((3,2))) #生成3x2的全一矩阵
print('zeros:\n',np.zeros((3,2)))#生成3x2的全0矩阵
print('eye:\n',np.eye(3))#生成3x3对角线为1的矩阵 单位矩阵
print('diag:\n',np.diag(my_list))#生成对角线为my_list的矩阵
one:
 [[1. 1.]
 [1. 1.]
 [1. 1.]]
zeros:
 [[0. 0.]
 [0. 0.]
 [0. 0.]]
eye:
 [[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]
diag:
 [[1 0 0]
 [0 2 0]
 [0 0 3]]
#列表中的乘法
print('操作:\n',np.array([1,2,3]*3))
print('repeat:\n',np.repeat([1,2,3],3))
操作:
 [1 2 3 1 2 3 1 2 3]
repeat:
 [1 1 1 2 2 2 3 3 3]
p1=np.ones((3,3))
p2=np.arange(9).reshape((3,3))
print(p1)
print(p2)

print('纵向相加:\n',np.vstack((p1,p2)))
print('横向相加:\n',np.hstack((p1,p2)))
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
[[0 1 2]
 [3 4 5]
 [6 7 8]]
纵向相加:
 [[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [0. 1. 2.]
 [3. 4. 5.]
 [6. 7. 8.]]
横向相加:
 [[1. 1. 1. 0. 1. 2.]
 [1. 1. 1. 3. 4. 5.]
 [1. 1. 1. 6. 7. 8.]]

1.2Array操作

print('p1:\n',p1)
print('p2:\n',p2)

print('p1+p2=\n',p1+p2)
print('p1*p2=\n',p1*p2)#对应位置相乘
print('p2^2=\n',p2**2)
print('p1.p2=\n',p1.dot(p2))#矩阵相乘
p1:
 [[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
p2:
 [[0 1 2]
 [3 4 5]
 [6 7 8]]
p1+p2=
 [[1. 2. 3.]
 [4. 5. 6.]
 [7. 8. 9.]]
p1*p2=
 [[0. 1. 2.]
 [3. 4. 5.]
 [6. 7. 8.]]
p2^2=
 [[ 0  1  4]
 [ 9 16 25]
 [36 49 64]]
p1.p2=
 [[ 9. 12. 15.]
 [ 9. 12. 15.]
 [ 9. 12. 15.]]
p3=np.arange(6).reshape((2,3))
print(p3)
#转化为行向量
print('行向量:\n',p3.reshape(1,-1))
#转化为列向量
print('列向量:\n',p3.reshape(-1,1))
[[0 1 2]
 [3 4 5]]
行向量:
 [[0 1 2 3 4 5]]
列向量:
 [[0]
 [1]
 [2]
 [3]
 [4]
 [5]]
#常见的计算
a=np.array([-4,-2,1,3,5])
print(a)
print('sum:',a.sum())
print('min:',a.min())
print('max:',a.max())
print('mean:',a.mean())
print('std:',a.std())
print('argmax:',a.argmax())#返回最大值的位置
print('argmin:',a.argmin())#返回最小值的位置
[-4 -2  1  3  5]
sum: 3
min: -4
max: 5
mean: 0.6
std: 3.2619012860600183
argmax: 4
argmin: 0

1.3索引与切片

#一维
s=np.arange(13)**2
print('s: ',s)
print('s[0]: ',s[0])
print('s[4]: ',s[4])
print('s[0:3]: ',s[0:3])
print('s[[0,2,4]]: ',s[[0,2,4]]) #间断型的索引值
s:  [  0   1   4   9  16  25  36  49  64  81 100 121 144]
s[0]:  0
s[4]:  16
s[0:3]:  [0 1 4]
s[[0,2,4]]:  [ 0  4 16]
#二维
r=np.arange(36).reshape((6,6))
print(r)
#>30的数据输出
print('r>30:\n',r[r>30])
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]
 [30 31 32 33 34 35]]
r>30:
 [31 32 33 34 35]
#copy()操作
r2=r[:3,:3]#0-2行 0-2列的数据
print(r2)
r2[:]=0
print(r)#影响了r
r3=r.copy()
r3[:]=10
print(r)
[[0 0 0]
 [0 0 0]
 [0 0 0]]
[[ 0  0  0  3  4  5]
 [ 0  0  0  9 10 11]
 [ 0  0  0 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]
 [30 31 32 33 34 35]]
[[ 0  0  0  3  4  5]
 [ 0  0  0  9 10 11]
 [ 0  0  0 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]
 [30 31 32 33 34 35]]

1.4遍历Array

t=np.random.randint(0,10,(4,3))
print(t)
[[6 7 7]
 [5 0 1]
 [3 7 7]
 [4 6 2]]
for row in t:
    print(row)
[6 7 7]
[5 0 1]
[3 7 7]
[4 6 2]
for i,row in enumerate(t):
    print('row {} is {} '.format(i,row))
row 0 is [6 7 7] 
row 1 is [5 0 1] 
row 2 is [3 7 7] 
row 3 is [4 6 2] 
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值