astype函数
astype函数用于array中数值类型转换
例子
通过代码实现感知机的阶跃函数
def step_function(x):
if x>0:
return 1
else:
return 0
上述函数参数X只接受浮点数(实数),step_function(3.0),不允许参数取numpy数组,例如step_function(np.array([-1.0,1.0]))。
问题:需要将其修改为支持numpy数组的实现
修改后:
def step_function(x):
y = x>0
return y.astype(np.int)
具体过程解释:
np.array([-1.0,1.0,2.0])
x = np.array([-1.0,1.0,2.0])
x # array([-1., 1., 2.])
y = x > 0
print(y) # [False True True]
y = y.astype(np.int)
y # array([0, 1, 1])
对numpy数据进行不等号运算后,数组的各个元素都会进行不等号运算,生成一个布尔类型数组。
数组y是一个布尔型数组,但我们要的阶跃函数是会输出int型的0或1的函数。
因为需要把数组y的元素类型从布尔类型转换为int型。
如上所示,可以用astype()方法转换numpy数组的类型。同时可以指定astype()参数来指定期望的类型,这个例子是np.int型
上述函数还有另一种实现方式
def step_function(x):
return np.array(x>0 , dtype = np.int)
maximum()函数
maximum 函数会返回较大的值
def relu(x):
return np.maximum(0,x)
x = np.arange(-5,5,0.1)
y = relu(x)
plt.plot(x,y)
plt.show()
ndim()函数
import numpy as np
A = np.array([1,2,3,4])
A #array([1, 2, 3, 4])
np.ndim(A) # 1
A.shape # (4,)
A.shape[0] # 4
B= np.array([[1,2],[3,4],[5,6]])
print(B)
[[1 2]
[3 4]
[5 6]]
)
print(np.ndim(B))
print(B.shape)
2
(3, 2)
dot()函数
矩阵相乘,乘积/点积
A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
np.dot(A,B)
array([[19, 22],
[43, 50]])
np.dot(A,B)和np.dot(B,A)结果可能不一样
通过dot函数 (多维数组的点积)可以实现简单神经网络的内积计算
# X为输入,W为权重,Y为输出
X = np.array([1,2])
print(X.shape)
W = np.array([[1,3,5],[2,4,6]])
print(W.shape)
Y = np.dot(X,W)
print(Y)
(2,)
(2, 3)
[ 5 11 17]