1、获取数据
方式一:
通过random.choice函数从指定的样本中随机抽取数据
import numpy as np
from numpy import random as nr
a=np.arange(1,25,dtype=float)//arange函数与python里的range函数一样用法,左闭右开;
c1=nr.choice(a,size=(3,4)) #size指定输出数组形状
c2=nr.choice(a,size=(3,4),replace=False) #replace缺省为True,即可重复抽取。
#下式中参数p指定每个元素对应的抽取概率,缺省为每个元素被抽取的概率相同。
c3=nr.choice(a,size=(3,4),p=a / np.sum(a))
print("随机可重复抽取")
print(c1)
print("随机但不重复抽取")
print(c2)
print("随机但按制度概率抽取")
print(c3)
choice函数里的参数不同输出结果也会不相同
方式二:
import numpy as np
np.random.seed(2019)
nd11 = np.random.random([10])
#获取指定位置的数据,获取第4个元素
nd11[3]
#截取一段数据
nd11[3:6]
#截取固定间隔数据
nd11[1:6:2]
#倒序取数
nd11[::-2]
#截取一个多维数组的一个区域内数据
nd12=np.arange(25).reshape([5,5])
nd12[1:3,1:3]
#截取一个多维数组中,数值在一个值域之内的数据
nd12[(nd12>3)&(nd12<10)]
#截取多维数组中,指定的行,如读取第2,3行
nd12[[1,2]] #或nd12[1:3,:]
##截取多维数组中,指定的列,如读取第2,3列
nd12[:,1:3]
详细解释可以看下图:
2、Numpy的算术运算
对应元素相乘(逐元乘法)np.multiply()
np.multiply函数用于数组或矩阵对应元素相乘,输出与相乘数组或矩阵的大小一致
A=np.array([[1,2],[-1,4]])
B=np.array([2,0],[3,4])
A*B或者
np.multiply(A,B)
输出结果两个表达式都一样
numpy数组还可以与标量即一个单独的数相乘,也是数组中的各个值与其相乘(期间会用到广播体制)
点积或内积元素 np.dot()
np.dot(a,b,out=None)
内积元素乘是指的第一个数组的行乘以第二个数组的列,其中X1和X2对应维度(即X1的第2个维度与X2的第1个维度)的元素个数必须保持一致。此外,矩阵X3的形状是由矩阵X1的行数与矩阵X2的列数构成的。
import numpy as np
X1=np.array([[1,2],[3,4]])
X2=np.array([[5,6,7],[8,9,10]])
X3=np.dot(X1,X2)
print(X3)
输出如下:
3、数组变形
3.1更改数组的形状
常用函数:
reshape:改变向量的维度,改变后不会改变向量本身的维度,但是按照下面的这种写法就是arr矩阵本身就是2行5列
arr=np.arange(10).reshape(2,5)
下面的是reshape的基本操作
import numpy as np
arr=np.arange(10)
print(arr)
print("将向量改为2行5列")
print(arr.reshape(2,5))
print("指定维度可以只写列或者行,另一个可以用-1代替,但是一定要保证可以除开向量的总长度!!!")
print(arr.reshape(-1,2))
resize 修改向量本身,即上面的转为2行5列后arr矩阵就变成了永久性的2行5列