广播
import numpy as np
v = np.array([1,2,3]) # v has shape (3,)
w = np.array([4,5])
print(np.reshape(v, (3, 1)) * w)
print(np.reshape(v, (3, 1)))
结果
[[ 4 5]
[ 8 10]
[12 15]]
[[1]
[2]
[3]]
将两个数组一起广播遵循以下规则:
如果数组不具有相同的rank,则将较低等级数组的形状添加1,直到两个形状具有相同的长度。
如果两个数组在维度上具有相同的大小,或者如果其中一个数组在该维度中的大小为1,则称这两个数组在维度上是兼容的。
如果数组在所有维度上兼容,则可以一起广播。
广播之后,每个阵列的行为就好像它的形状等于两个输入数组的形状的元素最大值。
在一个数组的大小为1且另一个数组的大小大于1的任何维度中,第一个数组的行为就像沿着该维度复制一样
eye函数可以创建一个n * n矩阵,对角线为1s,其他为0。
np.eye(3,3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
函数linspace在指定的时间间隔内返回均匀间隔的数字。 例如,下面的函数返回0到10之间的四个等间距数字。
np.linspace(0, 10, num=4)
array([ 0., 3.33333333, 6.66666667, 10.])
A x = b
A = np.array([[2,1,-2],[3,0,1],[1,1,-1]])
b = np.transpose(np.array([[-3,5,-2]]))
print(np.linalg.solve(A,b))
结果
[[ 1.]
[-1.]
[ 2.]]
垂直叠加
import numpy as np
a = np.arange(10).reshape(2,-1)
b = np.repeat(1, 10).reshape(2,-1)
print(a)
print(b)
print(np.concatenate([a, b], axis=0))
print(np.vstack([a, b]))
print(np.r_[a, b])
结果
[[0 1 2 3 4]
[5 6 7 8 9]]
[[1 1 1 1 1]
[1 1 1 1 1]]
[[0 1 2 3 4]
[5 6 7 8 9]
[1 1 1 1 1]
[1 1 1 1 1]]
[[0 1 2 3 4]
[5 6 7 8 9]
[1 1 1 1 1]
[1 1 1 1 1]]
[[0 1 2 3 4]
[5 6 7 8 9]
[1 1 1 1 1]
[1 1 1 1 1]]
水平叠加
np.concatenate([a, b], axis=1)
np.hstack([a, b])
np.c_[a, b]