数组的基本运算
>>>arr1 = ones(3,dtype=int32)
>>>arr2 = linspace(0,pi,3)#在0—pi之间寻找等分的3个点
>>>arr2
array([ 0. , 1.57079633, 3.14159265])
>>>arr = arr1 + arr2#加法
>>>arr
array([ 1. , 2.57079633, 4.14159265])
>>>arr.dtype.name
'float64'
>>>arr1 = array([10,20,30])
>>>arr2 = arange(4)
>>>arr = arr1 – arr2#减法
>>>arr
array([10, 19, 28])
>>>arr2**2#平方
array([0, 1, 4])
>>>10 * sin(arr1)#三角函数
array([-5.44021111, 9.12945251, -9.88031624])
>>>arr1 < 20#逻辑运算
array([ True, False, False], dtype=bool)
>>>arr1 = array([[1,1],[1,1]])
>>>arr2 = array([[1,2],[3,4]])
>>>arr = arr1 * arr2#这种写法按元素逐个计算
>>>arr
array([[1, 2],
[3, 4]])
>>>dot(arr1,arr2)#矩阵相乘
array([[4, 6],
[4, 6]])
>>>arr = exp(arr*1j)#幂
>>>arr
>>>arr.dtype.name
array([[ 0.54030231+0.84147098j, -0.41614684+0.90929743j],
[-0.98999250+0.14112001j, -0.65364362-0.7568025j ]])
特殊运算符
>>>arr1 = ones((2,3),dtype=int)
>>>arr1
array([[1, 1, 1],
[1, 1, 1]])
>>>arr2 = random.random((2,3))
>>>arr2
array([[ 0.24768132, 0.11499935, 0.45428546],
[ 0.42062837, 0.78951303, 0.67671437]])
>>>arr2 += arr1
>>>arr2
array([[ 1.24768132, 1.11499935, 1.45428546],
[ 1.42062837, 1.78951303, 1.67671437]])
>>>arr1 *= 2
>>>arr1
array([[2, 2, 2],
[2, 2, 2]])
最大值、最小值与求和
>>>arr = random.random((2,3))
>>>arr
array([[ 0.36985538, 0.42359558, 0.50613116],
[ 0.50200806, 0.43158128, 0.5307722 ]])
>>>arr.max()
0.53077220212788534
>>>arr.min()
0.36985537765875143
>>>arr.sum()#求和
2.763943665153096
行和列操作
>>>arr = arange(12).reshape(3,4)
>>>arr
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>>arr.sum(axis=1)#求每一行的和
array([ 6, 22, 38])
>>>arr.sum(axis=0)#求每一列的和
array([12, 15, 18, 21])
>>>arr.max(axis=0)#求每一列的最大值
array([ 8, 9, 10, 11])
>>>arr.max(axis=1)#求每一行的最大值
array([ 3, 7, 11])
>>>arr.min(axis=0)#求每一列的最小值
array([0, 1, 2, 3])
>>>arr.min(axis=1)#求每一行的最小值
array([0, 4, 8])
>>>arr.cumsum(axis=1)#每一行的累积和
array([[ 0, 1, 3, 6],
[ 4, 9, 15, 22],
[ 8, 17, 27, 38]])
>>>arr.cumsum(axis=0)#每一列的累积和
array([[ 0, 1, 2, 3],
[ 4, 6, 8, 10],
[12, 15, 18, 21]])
索引与切片
>>>arr = arange(20)
>>>arr
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
>>>arr[6:8]#输出下标是6,7,8的元素的值
array([6, 7])
>>>arr[:10:3] = 100000#相当于arr[0:10:3],从下标0开始每各3个元素把值改成100000
array([100000, 1, 2, 100000, 4, 5, 100000, 7,
8, 100000, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19])
>>>arr[::-1]#arr反转
array([ 19, 18, 17, 16, 15, 14, 13, 12,
11, 10, 100000, 8, 7, 100000, 5, 4,
100000, 2, 1, 100000])
数组的形状shape与修改数组的形状reshape
>>>arr = arange(12).reshape(3,4)
>>>arr
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>>arr.shape
(3, 4)
>>>arr.ravel()#把数组平坦化
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>>arr.shape = (2,6)
>>>arr
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11]])
>>>arr.transpose()#求转置
array([[ 0, 6],
[ 1, 7],
[ 2, 8],
[ 3, 9],
[ 4, 10],
[ 5, 11]])
>>>arr.resize((6,2))
array([[ 0, 6],
[ 1, 7],
[ 2, 8],
[ 3, 9],
[ 4, 10],
[ 5, 11]])