将数组广播到新的形状
举例说明np.broadcast函数的作用以及如何使用。
例1:将一行四列的数组广播到 四行四列:
import numpy as np
a = np.arange(4).reshape(1,4)
print(a)
print (np.broadcast_to(a,(4,4)))
输出如下:
[[0 1 2 3]]
[[0 1 2 3]
[0 1 2 3]
[0 1 2 3]
[0 1 2 3]]
例2:如果将一行三列的数组广播到四行四列就会报错
"""报错"""
a = np.arange(3).reshape(1,3)
print(a)
print (np.broadcast_to(a,(4,4)))
提示
operands could not be broadcast together with remapped shapes [original->remapped]: (1,3) and requested shape (4,4)
例3:将一行三列的数组广播到四行三列
a = np.arange(3).reshape(1,3)
print(a)
print (np.broadcast_to(a,(4,3)))
成功运行
[[0 1 2]]
[[0 1 2]
[0 1 2]
[0 1 2]
[0 1 2]]
例4:将三行一列的数组广播到四行三列,报错
"""报错"""
a = np.arange(3).reshape(3,1)
print(a)
print (np.broadcast_to(a,(4,3)))
报错如下:
operands could not be broadcast together with remapped shapes [original->remapped]: (3,1) and requested shape (4,3)
例5:将三行一列的数组广播到三行四列,成功
a = np.arange(3).reshape(3,1)
print(a)
print (np.broadcast_to(a,(3,4)))
输出如下:
[[0]
[1]
[2]]
[[0 0 0 0]
[1 1 1 1]
[2 2 2 2]]
例子6:将一行2列广播到(3, 4,2)
如果广播导(3, 4, 1)就会报错
import numpy as np
a = [1, 2]
# shape = (3, 4, 5)3, 4, 5会报错
b = np.broadcast_to(a ,(3, 4, 2))
print(b)
print(b.shape)
输出如下
[[[1 2]
[1 2]
[1 2]
[1 2]]
[[1 2]
[1 2]
[1 2]
[1 2]]
[[1 2]
[1 2]
[1 2]
[1 2]]]
(3, 4, 2)