numpy的用法

import numpy as np
ndarray
#创建数组,array
data1=[6,7,8,0,1]
np.array(data1)
#一维数组
array([6, 7, 8, 0, 1])
#创建多维数组
data2=[[1,2,3,4],[5,6,7,8]]
arr1=np.array(data2)
print(data2)
[[1, 2, 3, 4], [5, 6, 7, 8]]
#dtype数据类型
arr1.dtype
dtype('int32')
#shape属性
arr1.shape
(2, 4)
arr2=np.array(data2,dtype=np.int64)
print(arr2)
print(arr2.dtype)
[[1 2 3 4]
 [5 6 7 8]]
int64
#float
data3=[6,7,5,8,0,1]
arr3=np.array(data3)
print(arr3)
print(arr3.dtype)
[6 7 5 8 0 1]
int32
#astype类型转换
arr3.astype(np.int64)
array([6, 7, 5, 8, 0, 1], dtype=int64)
#ones
np.ones(10)
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
#zeros
np.zeros(10)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros((3,6))
array([[0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0.]])
#数组和标量之间的运算
nd=np.array([1,2,3,4])
print(nd)
[1 2 3 4]
nd*2
array([2, 4, 6, 8])
nd*nd
array([ 1,  4,  9, 16])
nd+nd
array([2, 4, 6, 8])
基本的索引和切片
#arange,range函数的数组版
np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
nd1=np.arange(1,20,2)
print(nd1)
[ 1  3  5  7  9 11 13 15 17 19]
print(nd1[5])#索引第六个元素
#索引第3,4,5个元素及索引为2,3,4波包括5
print(nd1[2:5])
11
[5 7 9]
#通过索引赋值
nd1[2:5]=10
print(nd1)
[ 1  3 10 10 10 11 13 15 17 19]
#多维数组
data2=[[1,2,3,4],[5,6,7,8]]
nd=np.array(data2)
print(nd)
[[1 2 3 4]
 [5 6 7 8]]
nd[:,1]#第二列的索引
array([2, 6])
nd[0]#代表二维数组的第一行
array([1, 2, 3, 4])
nd[1]
array([5, 6, 7, 8])
nd[0,3]
4
花式索引-Fancy indexing
#花式索引
nd=np.arange(32)
print(nd)
[ 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]
#reshape
nd1=np.reshape(nd,(8,4))
print(nd1)
[[ 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]]
#常规索引
nd1[0]
array([0, 1, 2, 3])
#花式索引,引入一个数组
nd1[[4,6,3,1]]#代表这四行的索引
array([[16, 17, 18, 19],
       [24, 25, 26, 27],
       [12, 13, 14, 15],
       [ 4,  5,  6,  7]])
nd1[[1,5,7,2]]
array([[ 4,  5,  6,  7],
       [20, 21, 22, 23],
       [28, 29, 30, 31],
       [ 8,  9, 10, 11]])
#选取多行多列交叉处的元素
nd1[[1,5,7,2],[0,3,1,2]]#前面代表行的索引,后面为列索引,得到一些点
array([ 4, 23, 29, 10])
如果希望获取一个矩形区域怎么办
#获取矩形区域的第一种方法
nd1[[1,5,7,2]][:,[0,3,1,2]]
array([[ 4,  7,  5,  6],
       [20, 23, 21, 22],
       [28, 31, 29, 30],
       [ 8, 11,  9, 10]])
#获取矩形区域的第二种方法
nd1[np.ix_([1,5,7,2],[0,3,1,2])]
array([[ 4,  7,  5,  6],
       [20, 23, 21, 22],
       [28, 31, 29, 30],
       [ 8, 11,  9, 10]])
通用函数(ufunc)
arr=np.arange(10)
print(arr)
[0 1 2 3 4 5 6 7 8 9]
np.sqrt(arr)
array([0.        , 1.        , 1.41421356, 1.73205081, 2.        ,
       2.23606798, 2.44948974, 2.64575131, 2.82842712, 3.        ])
B=np.arange(3)
print(B)
[0 1 2]
C=np.array([2,-1,4])
print(C)
[ 2 -1  4]
np.add(B,C)#表示B+C
array([2, 0, 6])
#maximum
np.maximum(B,C)#比较B,C中的对应元素
array([2, 1, 4])
常用数学与统计方法
#np.random.randn,随机函数
arr=np.random.randn(9)#随机生成9个元素
print(arr)
[-0.83429766 -0.45258848 -1.01153186 -1.96573331  0.61025561 -0.07908771
  0.80952966 -0.80207134 -0.40176655]
#最值,min,max
print(arr.min())
print(arr.max())
-1.9657333127457315
0.8095296553208304
#均值,求和,排序
print(arr.mean())
arr.sort()
print(arr)
-0.4585879596646293
[-1.96573331 -1.01153186 -0.83429766 -0.80207134 -0.45258848 -0.40176655
 -0.07908771  0.61025561  0.80952966]
#二维数组
arr1=np.random.randn(5,3)
print(arr1)
[[ 0.64789618 -1.0519086   1.01664657]
 [ 1.34751378 -0.72561592  2.14896093]
 [-0.98123432  0.84863767 -1.91041663]
 [-1.5667028  -1.09888922 -1.32244298]
 [-0.2944803   0.39376023 -1.65841034]]
#极值,均值,排序
print(arr1.min())
print(arr1.max())
print(arr1.mean())
arr1.sort()
print(arr1)
-1.910416627866521
2.1489609330898984
-0.2804457165306344
[[-1.0519086   0.64789618  1.01664657]
 [-0.72561592  1.34751378  2.14896093]
 [-1.91041663 -0.98123432  0.84863767]
 [-1.5667028  -1.32244298 -1.09888922]
 [-1.65841034 -0.2944803   0.39376023]]
arr1.sort(axis=0)#axis=0,按列j进行升序排序
print(arr1)
[[-1.91041663 -1.32244298 -1.09888922]
 [-1.65841034 -0.98123432  0.39376023]
 [-1.5667028  -0.2944803   0.84863767]
 [-1.0519086   0.64789618  1.01664657]
 [-0.72561592  1.34751378  2.14896093]]
#linspace
np.linspace(0,10,2)#两个端点
array([ 0., 10.])
np.linspace(0,10,5)#5个端点
array([ 0. ,  2.5,  5. ,  7.5, 10. ])
np.linspace(0,10,11)
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])
线性代数
x=np.array([[1,2,3],[4,5,6]])
print(x)
[[1 2 3]
 [4 5 6]]
y=np.array([[6,23],[-1,7],[8,9]])
print(y)
[[ 6 23]
 [-1  7]
 [ 8  9]]
x.dot(y)#x左乘y,x的列数与y的行数相等
array([[ 28,  64],
       [ 67, 181]])
m=np.array([[4,2],[3,1]])
print(m)
[[4 2]
 [3 1]]
from numpy.linalg import inv
inv(m)
array([[-0.5,  1. ],
       [ 1.5, -2. ]])
随机数的生成
from numpy import random
#normal
rArray=random.normal(size=(4,4))
print(rArray)
[[ 0.70998156 -1.03662731  0.15157774  0.35032601]
 [-1.29359208  0.12856242 -0.14207438  0.29285926]
 [ 1.13685027 -0.81536526 -1.55133895  0.72945727]
 [ 1.71221626  0.63385447  0.23059643  1.55721617]]
#rabdint,产生给定上下限范围内的随机选取整数
random.randint(0,2)
0
i=0
while i<20:#执行20次
    print(random.randint(0,2))
    i+=1
1
1
1
0
1
1
0
1
0
0
1
0
0
1
0
1
1
0
1
1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值