读取数据
import numpy as np
np.random.seed(2019)
# 生成10个随机数:[0.0, 1.0)
nd1 = np.random.random([10]) # 列表
print(nd1)
nd2 = np.random.random((10)) # 元组
print(nd2)
nd3 = np.random.random(10)
print(nd3)
print("*"*50)
运行结果:
import numpy as np
np.random.seed(2019)
# 生成4×4的二维矩阵:[0.0, 1.0)
nd4 = np.random.random((4, 4))
print(nd4)
print("*"*50)
nd5 = np.random.random([4, 4])
print(nd5)
运行结果:
import numpy as np
np.random.seed(2019)
nd1 = np.random.random([10]) # 列表
print(nd1)
# 获取指定位置的数据,获取第4个元素
print(nd1[3]) # 下标从0开始
# 截取一段数据
print(nd1[3: 6]) # 下标为3 4 5,start=3, end=6,step=1
# 截取固定间隔数据
print(nd1[1:6:2]) # 下标为1 3 5,start=1,end=6,step=2
# 倒序取数
print(nd1)
print(nd1[::-2])
# 下标从左到右依次为:-10 -9 -8 -7 -6 -5 …… -2 -1,取下表为:-1 -3 -5 -7 -9
运行结果:
import numpy as np
np.random.seed(2019)
print(np.arange(25))
nd2 = np.arange(25).reshape([5, 5]) # 列表
print(nd2)
nd3 = np.arange(25).reshape((5, 5)) # 元组
print(nd3)
运行结果:
import numpy as np
np.random.seed(2019)
nd2 = np.arange(25).reshape([5, 5]) # 列表
print(nd2)
# 截取一个多维数组的某个区域的数据
print(nd2[1:3, 1:3]) # 行列好的起始:0 行号:1 2 列号:1 2 区间:左闭右开
# 截取一个多维数组中数值在某个值域之内的数据
print(nd2[(nd2>3) & (nd2
运行结果:
import numpy as np
from numpy import random as nr
a = np.arange(1, 25, dtype=float) # 左闭右开,步长为1,浮点数
print(a)
print("*"*50)
# 输出3×4的二维矩阵,可重复抽取 size:指定输出数组形状
c1 = nr.choice(a, size=(3, 4))
print("随机可重复抽取:")
print(c1)
print("*"*50)
# 输出3×4的二维矩阵,replace修改为False,不可重复抽取
c2 = nr.choice(a, size=(3, 4), replace=False)
print("随机但不重复抽取:")
print(c2)
print("*"*50)
# 下式中参数p指定每个元素对应的抽取概率,默认为每个元素被抽取的概率相同
c3 = nr.choice(a, size=(3, 4), p=a / np.sum(a))
print("随机但按制度概率抽取:")
print(c3)
print("*"*50)
print("np.sum(a)={}".format(np.sum(a))) # np.sum(a) 将a中的数据进行求和
NumPy的算术运算
逐元素操作
又称为逐元乘法(Element-Wise Product)或哈达玛积(Hadamard Product)。运算符:* 或 np.multiply()。
逐元素操作(又称对应元素相乘)是两个矩阵中对应元素(位置对应)相乘,输出的大小与相乘数组或矩阵的大小一致。
import numpy as np
A = np.array([[1, 2], [-1, 4]])
B = np.array([[2, 0], [3, 4]])
print("*"*10+"两数组元素相乘"+"*"*10)
print(A*B) # 两数组对应位置的数据元素相乘
print(np.multiply(A, B))
print("*"*10+"数组元素与标量(单一数值)相乘"+"*"*10)
print(A*2.0)
print(A/2.0)
运行结果:
数组通过一些激活函数处理后,输出与输入形状一致:
X = np.random.rand(2, 3)
print(X)
print(X.shape)
def sigmoid(x):
return 1/(1+np.exp(-x))
# print(np.exp(1)) # np.exp(1) = e^1 = e = 2.718281828459045
def relu(x):
return np.maximum(0, x)
# print(np.maximum(0, 5)) # 返回最大值
# print(np.maximum(0, -2)) # 返回最大值
def softmax(x):
return np.exp(x)/np.sum(np.exp(x))
print("输入参数X的形状为:", X.shape)
print("激活函数sigmoid输出形状:", sigmoid(X).shape)
print("激活函数relu输出形状:", relu(X).shape)
print("激活函数softmax输出形状:", softmax(X).shape)
运行结果:
点积运算
点积(Dot Product)运算又称为内积运算,运算符:np.dot()
第一个矩阵的第2个维度与第二个矩阵的第1个维度的数据元素个数必须一致。
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)
运算结果:
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
虚拟主机的配置 (1)基于IP地址的虚拟主机配置 Listen 80 DocumentRoot /www/example1 ServerName www.example1.com DocumentRoot /www/example2 ServerName ww…