import numpy as np
a = np.arange(6)
b = np.zeros(4)
c = np.ones((2,3))
d = np.empty(4)
>>>array([0, 1, 2, 3, 4, 5])
>>>array([0., 0., 0., 0.])
>>>array([[1., 1., 1.],
[1., 1., 1.]])
>>>array([7.08703453e-312, 7.08703453e-312, 7.08703453e-312, 7.08703478e-312])
f = np.linspace(5,10,10)
>>>array([ 5. , 5.55555556, 6.11111111, 6.66666667, 7.22222222,
7.77777778, 8.33333333, 8.88888889, 9.44444444, 10. ])
g = g = np.logspace(1,-1,3)
>>>g
>>>g = np.logspace(1,-1,3)
a.shape = (2,3)
>>>a
>>>array([[0, 1, 2],
[3, 4, 5]])
>>>a = np.array([1,2,3,4,5,6])
>>>a.dtype
>>>dtype('int32')
>>>
>>>b = np.array([1.,2.,3.,4.,5.,6.])
>>>b.dtype
>>>dtype('float64')
a = np.arange(8)
a[::-1]
array([7, 6, 5, 4, 3, 2, 1, 0])
a[2:6]
array([2, 3, 4, 5])
a[1::3]
array([1, 4, 7])
a = np.arange(6)
b = a[1::2]
b[0] = 99
print(b)
print(a)
>>>[99 3 5]
[ 0 99 2 3 4 5]
数组的算术
a = np.arange(6)
a - 1
>>>array([-1, 0, 1, 2, 3, 4])
a + a
>>>array([ 0, 2, 4, 6, 8, 10])
2*a + 1
>>>array([ 1, 3, 5, 7, 9, 11])
用数组的算术方法表示导数
(y[1:]-y[:1])/(x[1:]-x[:1])
#或者
np.gradient(y)/np.gradient(x)
Numpy可以将不同形状的数组一起广播(就像是自动扩展)
当两个数组中的两个轴的秩相等时,这两个元素之间的操作是逐元素计算的
当数组a上的轴的长度为1且数组b上的相同轴的长度大于1时,a的值在该维度上延伸
例如
a = np.arange(4)
a.shape = (2,2)
b = np.array([[100],[1000]])
a * b
>>>
array([[0,100],[2000,3000]])
a = np.array(12)
a.shape = (4,3)
b = np.array([10,100,1000])
a + b
>>>array([
[10,101,1002],
[13,104,1005],
[16,107,1008],
[19,110,1011]])
获取许多任意索引的数据,获取某种符合某种模式的索引但索引不够规则
花式索引的举例
>>>a = 2*np.arange(8)**2 + 1
>>>a
>>>array([ 1, 3, 9, 19, 33, 51, 73, 99], dtype=int32)
>>>a[[3,-1,1]]
>>>array([19, 99, 3], dtype=int32)
>>>fib = np.array([0,1,1,2,3,5])
>>>a[fib]
>>>array([ 1, 3, 3, 9, 19, 51], dtype=int32)
>>>b = a[[[[2,7],[3,4]]]]
>>>[[ 9 99]
[19 33]]
不能在一个维度中混合使用切片和花式索引
>>>a = np.arange(16)-8
>>>a.shape = (4,4)
>>>a
>>>array([[-8, -7, -6, -5],
[-4, -3, -2, -1],
[ 0, 1, 2, 3],
[ 4, 5, 6, 7]])
>>>a[:,[2,-1,0]]
>>>array([[-6, -5, -8],
[-2, -1, -4],
[ 2, 3, 0],
[ 6, 7, 4]])
>>>fib = np.array([0,1,1,2,3])
>>>a[fib,::-2]
>>>array([[-5, -7],
[-1, -3],
[-1, -3],
[ 3, 1],
[ 7, 5]])
在多个维度中的每个维度上单独使用一维花式索引
>>>i = np.arange(4)
>>>a[i,i]
>>>array([-8, -3, 2, 7])
>>>a[i[1:],i[1:]-1]
>>>array([-4, 1, 6])
>>>a[i[:3],i[:3]+1]
>>>array([-7, -2, 3])
掩模与花式索引相似,但是掩模必须是一个布尔数组
掩模作用于形状相同或者轴长度相同的数组进行索引
如果指定的位置为True,则显示对应的值;如果指定的位置为False,则不显示值
>>>a = np.arange(9)
>>>a.shape = (3,3)
>>>m = np.ones(3,dtype=bool)
>>>m
>>>array([ True, True, True])
>>>a[m,m]
>>>array([0, 4, 8])