广播和数组操作函数
numpy广播(Broadcast)numpy数组操作函数修改数组形状numpy.reshape()numpy.ndarray.flatnumpy.ndarray.flatten和numpy.ravel
翻转数组transpose和ndarray.Tnumpy.swapaxes
numpy广播(Broadcast)
若数组a,b形状相同,即a.shape==b.shape,那么a+b,a*b的结果就是对应数位的运算
import numpy
as np
a
=np
.array
([[1,2,3],[4,5,6]])
b
=np
.array
([[1,4,7],[2,5,8]])
print(a
+b
,'\n')
print(a
*b
)
[[ 2 6 10]
[ 6 10 14]]
[[ 1 8 21]
[ 8 25 48]]
若两个数组形状不同,且有一个数组维度为1,则会触发广播机制
a
=np
.array
([[1,2,3],[4,5,6]])
b
=np
.array
([1,2,3])
print(a
+b
,'\n')
print(a
*b
)
[[2 4 6]
[5 7 9]]
[[ 1 4 9]
[ 4 10 18]]
numpy数组操作函数
修改数组形状
numpy.reshape()
不改变数据的情况下修改形状
numpy.reshape(array , newshape , order = 'C')
参数描述
array要修改形状的数组newshape整数或整数数组,新的形状应该兼容原有形状order‘C’——按行,‘F’——按列,‘A’——原顺序,‘K’——元素咋内存中出现的顺序
import numpy
as np
a_array
=np
.arange
(16)
print(a_array
,'\n')
b_array
=np
.reshape
(a_array
,[4,4])
print(b_array
,'\n')
c_array
=a_array
.reshape
([2,8])
print(c_array
)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[[ 0 1 2 3 4 5 6 7]
[ 8 9 10 11 12 13 14 15]]
numpy.ndarray.flat
numpy.ndarray.flat为数组元素迭代器
array
=np
.arange
(9).reshape
([3,3])
print(array
,'\n')
for row
in array
:
print(row
)
for element
in array
.flat
:
print(element
)
[[0 1 2]
[3 4 5]
[6 7 8]]
[0 1 2]
[3 4 5]
[6 7 8]
0
1
2
3
4
5
6
7
8
numpy.ndarray.flatten和numpy.ravel
numpy扁平化函数numpy.ndarray.flatten返回一份数组拷贝,对拷贝内容的修改不影响原始数值;numpy.ravel返回一个数组的视图,修改视图时会影响原始数组
numpy.ndarray.flatten(order = 'C')
numpy.ravel(order = 'C')
参数描述
order‘C’——按行,‘F’——按列,‘A’——原顺序,‘K’——元素咋内存中出现的顺序
array
=np
.arange
(16).reshape
([4,4])
print(array
,'\n')
print(array
.flatten
(),'\n')
print(array
.ravel
())
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
a_array
=np
.arange
(16).reshape
([4,4])
print(a_array
,'\n')
b_array
=a_array
.copy
()
c_array
=a_array
.ravel
()
d_array
=array
.flatten
()
print('c_array:')
print(c_array
)
print('d_array:')
print(d_array
,'\n')
c_array
[1]=100
d_array
[1]=100
print('a_array:')
print(a_array
)
print('b_array:')
print(b_array
,'\n')
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
c_array:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
d_array:
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
a_array:
[[ 0 100 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[ 12 13 14 15]]
b_array:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
翻转数组
transpose和ndarray.T
numpy数组转置函数
a_array
=np
.arange
(16).reshape
([4,4])
print('a_array:\n',a_array
)
print('使用transpose后:')
print(np
.transpose
(a_array
))
print('使用.T转置后:')
print(a_array
.T
)
a_array:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
使用transpose后:
[[ 0 4 8 12]
[ 1 5 9 13]
[ 2 6 10 14]
[ 3 7 11 15]]
使用.T转置后:
[[ 0 4 8 12]
[ 1 5 9 13]
[ 2 6 10 14]
[ 3 7 11 15]]
numpy.swapaxes
numpy用于交换数组两个轴的函数
numpy.swapaxes(arr , axis1, axis2)
参数描述
arr输入数组axis1对应数组第一个轴axis2对应数组第二个轴
array
=np
.arange
(8).reshape
(2,2,2)
print(array
)
print(np
.swapaxes
(array
,0,2))
[[[0 1]
[2 3]]
[[4 5]
[6 7]]]
[[[0 4]
[2 6]]
[[1 5]
[3 7]]]
(0)000->(0)000(1)001->(4)100(2)010->(2)010(3)011->(6)110(4)100->(1)001(5)101->(5)101(6)110->(3)011(7)111->(7)111