>>> np.random.randint(0, 50, 5) # 随机数组,5个0到50之间的数字
array([13, 47, 31, 26, 9])
>>> np.random.randint(0, 50, (3,5)) # 3行5列,共15个随机数,都介于[0,50]
array([[44, 34, 35, 28, 18],
[24, 24, 26, 4, 21],
[30, 40, 1, 24, 17]])
>>> np.random.rand(10) # 10个介于[0,1)的随机数
array([ 0.58193552, 0.11106142, 0.13848858, 0.61148304, 0.72031503,
0.12807841, 0.49999167, 0.24124012, 0.15236595, 0.54568207])
>>> np.random.standard_normal(5) # 从标准正态分布中随机采样5个数字
array([2.82669067, 0.9773194, -0.72595951, -0.11343254, 0.74813065])
使用append()和insert()函数在原数组的基础上追加或插入新元素并返回新数组,也可用下标方式直接修改数组中的一个或多个元素的值。
>>> x = np.arange(8)
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> np.append(x, 8) # 返回新数组,在尾部追加一个元素
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> np.append(x, [9,10]) # 返回新数组,在尾部追加多个元素
array([0, 1, 2, 3, 4, 5, 6, 7, 9, 10])
>>> x # 不影响原来的数组
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> x[3] = 8 # 使用下标的形式原地修改元素值
>>> x # 原来的数组被修改了
array([0, 1, 2, 8, 4, 5, 6, 7])
>>> np.insert(x, 1, 8) # 在下标1的位置插入元素8,返回新数组
array([0, 8, 1, 2, 8, 4, 5, 6, 7])
切片
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a[::-1] # 反向切片
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
>>> a[::2] # 隔一个取一个元素
array([0, 2, 4, 6, 8])
>>> a[:5] # 前5个元素
array([0, 1, 2, 3, 4])
>>> c = np.arange(25) # 创建数组
>>> c.shape = 5,5 # 修改数组形状
>>> c
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
>>> c[0, 2:5] # 第0行中下标[2,5)之间的元素值
array([2, 3, 4])
>>> c[1] # 第1行所有元素
# 不指定列下标,表示所有列
array([5, 6, 7, 8, 9])
>>> c[2:5, 2:5] # 行下标和列下标都介于[2,5)之间的元素值
array([[12, 13, 14],
[17, 18, 19],
[22, 23, 24]])
>>> c[[1,3], [2,4]] # 第1行第2列的元素和第3行第4列的元素
array([ 7, 19])
>>> c[[1,3], 2:4] # 第1行和第3行的第2、3列
array([[ 7, 8],
[17, 18]])
>>> c[:, [2,4]] # 第2列和第4列所有元素,对行下标进行切片,冒号表示所有行
array([[ 2, 4],
[ 7, 9],
[12, 14],
[17, 19],
[22, 24]])
>>> c[:, 3] # 第3列所有元素
array([ 3, 8, 13, 18, 23])
>>> c[[1,3]] # 第1行和第3行所有元素
array([[ 5, 6, 7, 8, 9],
[15, 16, 17, 18, 19]])
>>> c[[1,3]][:, [2,4]] # 第1、3行的2、4列元素
array([[ 7, 9],
[17, 19]])