numpy学习之路(5)

广播

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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值