01numpy学习笔记整理

                       目  录
1.创建ndarray数组
2.创建ndarray数组其他的方法(zeros,empty,ones,arange)
3.指定ndarray数据类型(其实就是基于dtype属性,进行明确的定义)P86
4.显式地转换数据类型(astype)
5.矢量化:尺寸相等的数组之间的任何算术运算都将会将运算运用到元素级
6.基本的索引和切片,关注切片是原始数组的“视图”而非拷贝,因此直接对切片修改会改动原数组
7.布尔型索引(其实就是0/1基于所在位置进行的索引)
8.花式索引(指的是利用整数数组进行索引),当然也可以用负数进行索引
9.数组的转置和转换
10.通用函数:快速的元素级数组函数
11.利用数组进行数据处理
12.常用的数学和统计方法(sum,std,mean,max,min,argmin,argmax,cumsum,cumprod)
13.用于布尔型数组的方法
14.其他方法(排序和唯一化)
15.用于数组的文件输入输出
16.线性代数运算(在np.linalg中有一组标准的矩阵运算函数)
17.随机数的生成(numpy.random模块)

1.创建ndarray数组
import numpy as np 
data=[[1,2,3],[4,5,6]]
arr1=np.array(data)
print(arr1.shape)
print(arr1.dtype)
(2, 3)
int32
2.创建ndarray数组其他的方法(zeros,empty,ones,arange)
arr1=np.zeros((3,6))
print(arr1)
arr2=np.empty((3,2))
print(arr2)
arr3=np.arange(10)
print(arr3)
[[ 0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.]
 [ 0.  0.  0.  0.  0.  0.]]
 
[[  7.87847941e-315   7.87848185e-315]
 [  7.87769522e-315   3.91938443e-316]
 [  3.95820534e-316   3.95823024e-316]]
 
[0 1 2 3 4 5 6 7 8 9]
3.指定ndarray数据类型(其实就是基于dtype属性,进行明确的定义)P86
arr=np.array([1,2,3],dtype=np.float64)
4.显式地转换数据类型(astype)
arr1=arr.astype(np.float64)
5.矢量化:尺寸相等的数组之间的任何算术运算都将会将运算运用到元素级
arr1=np.array([[1,2,3],[4,5,6]])
arr2=np.array([[1,3,5],[2,4,6]])
print(arr1-arr2)
print(arr1*arr2)
print(1/arr1)
print(arr1**2)
[[ 0 -1 -2]
 [ 2  1  0]]
 
[[ 1  6 15]
 [ 8 20 36]]
 
[[ 1.          0.5         0.33333333]
 [ 0.25        0.2         0.16666667]]
 
[[ 1  4  9]
 [16 25 36]]
6.基本的索引和切片,关注切片是原始数组的“视图”而非拷贝,因此直接对切片修改会改动原数组
arr=np.array([1,2,3,4,5])
print(arr[3])
arr[2:4]=12
print(arr)
4
[ 1  2 12 12  5]
7.布尔型索引(其实就是0/1基于所在位置进行的索引)
name=np.array(["bob","joe","kitty","john"])
data=np.random.randn(4,4)
print(data)
data1=data[name=="joe"]
print(data1)
data1[data1<0]=0#很好的批处理方法!
print(data1)
[[-1.04725263  1.25324549 -1.36186917 -1.22608039]
 [-0.99111914 -0.42502115 -0.10998458  1.14502491]
 [-0.09662722  1.46319233  0.54577043  1.08601567]
 [ 0.41236581  1.00661673 -1.03851195  0.84669917]]
[[-0.99111914 -0.42502115 -0.10998458  1.14502491]]
[[ 0.          0.          0.          1.14502491]]
8.花式索引(指的是利用整数数组进行索引),当然也可以用负数进行索引
arr=np.empty((4,4))
for i in range(4):
    arr[i]=i
print(arr)
arr1=arr[[1,2,3]]
print(arr1)
arr2=arr[[1,2],[2,3]]#基于横纵坐标的精确索引
print(arr2)
[[ 0.  0.  0.  0.]
 [ 1.  1.  1.  1.]
 [ 2.  2.  2.  2.]
 [ 3.  3.  3.  3.]]
 
[[ 1.  1.  1.  1.]
 [ 2.  2.  2.  2.]
 [ 3.  3.  3.  3.]]
 
[ 1.  2.]
9.数组的转置和转换
arr=np.array([[1,2,3],[4,5,6]])
print(arr)
arr1=arr.T
print(arr1)
#计算矩阵内积
arr2=np.dot(arr.T,arr)
print(arr2)
[[1 2 3]
 [4 5 6]]
 
[[1 4]
 [2 5]
 [3 6]]
 
[[17 22 27]
 [22 29 36]
 [27 36 45]]
10.通用函数:快速的元素级数组函数
一元func:abs,sqrt,square,exp,log,sign,cell,floor,rint,modf,cos,sin,tan等;
二元func:add,subtract,multiply,divide,power,maximum,minimum,mod等;
11.利用数组进行数据处理
arr1=np.arange(-2,2,0.1)
arrx,arry=np.meshgrid(arr1,arr1)
z=np.sqrt(arrx**2+arry**2)
print(z)
[[ 2.82842712  2.75862284  2.69072481 ...,  2.62488095  2.69072481
   2.75862284]
 [ 2.75862284  2.68700577  2.61725047 ...,  2.54950976  2.61725047
   2.68700577]
 [ 2.69072481  2.61725047  2.54558441 ...,  2.47588368  2.54558441
   2.61725047]
 ..., 
 [ 2.62488095  2.54950976  2.47588368 ...,  2.40416306  2.47588368
   2.54950976]
 [ 2.69072481  2.61725047  2.54558441 ...,  2.47588368  2.54558441
   2.61725047]
 [ 2.75862284  2.68700577  2.61725047 ...,  2.54950976  2.61725047
   2.68700577]]
12.常用的数学和统计方法(sum,std,mean,max,min,argmin,argmax,cumsum,cumprod)
arr=np.random.randn(5,4)
arr.mean()
arr.sum()
-5.551015770041638
13.用于布尔型数组的方法
arr=np.random.randn(100)
print((arr>0).sum())
#any用于测试数组中是否存在一个或者多个True
#all用于检测数组中所有值是否都是True
bools=np.array([True,False,False,False])
print(bools.any())
print(bools.all())
52
True
False
14.其他方法(排序和唯一化)
#排序
arr=np.random.randn(10)
print(arr)
arr.sort()
print(arr)
#唯一化
names=np.array(['hello','tom','joe','hello','tom'])
name_un=np.unique(names)
print(name_un)
[ 0.25421376 -0.38828909 -1.50038819  1.10056855  0.18794147  0.49108345
 -0.69194139 -0.41112516  1.38519278  0.27180852]
[-1.50038819 -0.69194139 -0.41112516 -0.38828909  0.18794147  0.25421376
  0.27180852  0.49108345  1.10056855  1.38519278]
['hello' 'joe' 'tom']
15.用于数组的文件输入输出
#np.save('文件名',数组名)
#np.load('文件名')
#文本文件的载入:np.loadtxt
16.线性代数运算(在np.linalg中有一组标准的矩阵运算函数)
#diag,dot,trace,det,eig,inv,pinv,qr,svd,solve,lstsq
from numpy.linalg import inv,qr
x=np.random.randn(5,5)
print(x)
mat=x.T.dot(x)
print(mat)
inv(mat)
q,r=qr(mat)
print(q)
[[ 0.87985862  0.54117542  1.69821725  0.61023364 -1.17961437]
 [-0.07470329 -1.55220329 -0.82470084  1.80848588 -0.45377477]
 [ 1.50866418 -0.3881302  -0.79675966  0.74068995 -0.61822733]
 [-0.5387344   0.09261887 -2.15655703 -1.55449794 -0.66840357]
 [-0.77734655  1.30503828  0.27238962 -0.6068922  -0.37929182]]
[[ 3.95030179 -1.05780955  1.30382652  2.82849894 -1.28175965]
 [-1.05780955  4.56455409  2.66412428 -3.70037181 -0.25097205]
 [ 1.30382652  2.66412428  8.92383359  2.14174992  0.20170081]
 [ 2.82849894 -3.70037181  2.14174992  6.97640985 -0.72917919]
 [-1.28175965 -0.25097205  0.20170081 -0.72917919  2.57023225]]
[[-0.74564366 -0.1968808   0.44826316  0.41426479  0.18082674]
 [ 0.19966803 -0.68098193  0.1601137  -0.38531215  0.56770982]
 [-0.24610524 -0.58137677 -0.69455254  0.1646278  -0.30319584]
 [-0.5338965   0.3633757  -0.40664498 -0.51729187  0.38724877]
 [ 0.24193998  0.16571276 -0.35448607  0.6206658   0.63491568]]
17.随机数的生成(numpy.random模块)
常见函数:seed。permutation,shuffle,rand,randint,randn,binomial,normal。beta,chisquare,gamma,uniform
随机漫步示例:
import random
position=0
walk=[position]
steps=1000
for i in range(steps):
    step=1 if random.randint(0,1) else -1
    position+=step
    walk.append(position)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值