掌握numpy数组对象ndarray

import numpy as np
a=np.array([[1,2,3],[1,2,4]],dtype=np.float32)
a.size   #查看属性
a.shape
a.ndim
a.dtype  #优先考虑后面的
dtype('float32')
a.reshape(3,2)  #重建数组

array([[1., 2.],
       [3., 1.],
       [2., 4.]], dtype=float32)
list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
np.arange(10)
np.linspace(0,10,10,endpoint=False)  #等差数列
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
np.logspace(0,10,10,endpoint=False,base=2)  #等比数列,以2为底
array([  1.,   2.,   4.,   8.,  16.,  32.,  64., 128., 256., 512.])
2**np.linspace(0,10,10,endpoint=False)  #以2为底的法②
array([  1.,   2.,   4.,   8.,  16.,  32.,  64., 128., 256., 512.])
np.zeros(2)
np.zeros((2,3))
array([[0., 0., 0.],
       [0., 0., 0.]])
np.eye(3)
array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])
np.ones(2)
np.ones((2,3))
array([[1., 1., 1.],
       [1., 1., 1.]])
np.diag([1,2])
array([[1, 0],
       [0, 2]])
a=np.array([1,2,3],dtype=np.int8)  #指定数据类型
a.dtype
dtype('int8')
b=np.int32(a)
b.dtype
dtype('int32')

random函数中的生成随机数

np.random.random(size=(2,3))  #无约束的生成随机数随机的float形数据0~1之间
array([[0.94289768, 0.13512138, 0.09422735],
       [0.11548301, 0.15823681, 0.06400589]])
np.random.rand(2,3,2)  #在你给的数据大小返回随机数2行3列2个维度
array([[[0.5183768 , 0.01195447],
        [0.37991297, 0.41516937],
        [0.21899111, 0.48857683]],

       [[0.10248279, 0.64322559],
        [0.47567921, 0.18225372],
        [0.68420413, 0.79400184]]])
np.random.randn(2,3,2)
array([[[-0.04336451,  0.30785335],
        [-2.835428  ,  0.69249485],
        [-1.08583714,  0.76979326]],

       [[ 1.83308484, -1.58371505],
        [-2.38640781,  0.89070407],
        [ 0.67081718,  1.91745522]]])
np.random.randint(0,10,size=(2,3))  #给定的整数范围内生成随机数
array([[9, 5, 1],
       [0, 1, 8]])

数组索引和标记

  1. 一维数组的索引
arr=np.arange(10)
arr[5]
5
arr=np.arange(10)
arr[2:5]   #取一定范围内的值包前不包后
array([2, 3, 4])
arr=np.arange(10)
arr[2:]
array([2, 3, 4, 5, 6, 7, 8, 9])
arr=np.arange(10)
arr[:5]  #表示从arr[0]开始
array([0, 1, 2, 3, 4])
arr=np.arange(10)
arr[1:-1:2]  #取1:-1,步长为2
array([1, 3, 5, 7])
arr=np.arange(10)
arr[-1]   #后往前数的第一个元素
9
b=np.random.randint(0,10,size=(2,3))
print(b)
b[1,:]
[[4 9 2]
 [7 0 6]]





array([7, 0, 6])
  1. 二维数组的索引
arr=np.array([[1,2,3,4,5],[4,5,6,7,8],[9,10,11,12,13]])
print(arr)
[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 9 10 11 12 13]]
arr=np.array([[1,2,3,4,5],[4,5,6,7,8],[9,10,11,12,13]])
print(arr[0,2:4]) #第0行中第2列和第3列的元素
[3 4]
arr=np.array([[1,2,3,4,5],[4,5,6,7,8],[9,10,11,12,13]])
print(arr[1:,2:])   #索引第2和第3行中第3~5列的元素
[[ 6  7  8]
 [11 12 13]]
arr=np.array([[1,2,3,4,5],[4,5,6,7,8],[9,10,11,12,13]])
print(arr[:,2]) #索引第2列的元素
[ 3  6 11]
arr=np.array([[1,2,3,4,5],[4,5,6,7,8],[9,10,11,12,13]])
print(arr[[(0,1,2),(1,2,3)]])
[ 2  6 12]


/Users/apple/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:2: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
arr=np.array([[1,2,3,4,5],[4,5,6,7,8],[9,10,11,12,13]])
print(arr[1:,(0,2,3)]) #索引第2,3行中第0,2,3列的元素
[[ 4  6  7]
 [ 9 11 12]]
mask=np.array([1,0,1],dtype=np.bool) #mask是一个布尔数组,它索引第1、3行中第2列的元素
print(arr[mask,2])
[ 3 11]

ravel函数展平数组

b=np.random.randint(0,10,size=(2,3))
b[1,:]
array([6, 3, 4])
b
array([[2, 5, 4],
       [6, 3, 4]])
b[:,0]
array([2, 6])
b[:,::2]
array([[2, 4],
       [6, 4]])
b.ravel()
array([2, 5, 4, 6, 3, 4])
b.flatten()
array([2, 5, 4, 6, 3, 4])
b.flatten(order='F') #纵向的展平
array([2, 6, 5, 3, 4, 4])
a=np.arange(10).reshape(2,5)
b=np.linspace(0,1,endpoint=False,num=10).reshape(2,5)
a
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
b
array([[0. , 0.1, 0.2, 0.3, 0.4],
       [0.5, 0.6, 0.7, 0.8, 0.9]])
np.vstack((a,b)) #横向
array([[0. , 1. , 2. , 3. , 4. ],
       [5. , 6. , 7. , 8. , 9. ],
       [0. , 0.1, 0.2, 0.3, 0.4],
       [0.5, 0.6, 0.7, 0.8, 0.9]])
np.concatenate((a,b),axis=0)
array([[0. , 1. , 2. , 3. , 4. ],
       [5. , 6. , 7. , 8. , 9. ],
       [0. , 0.1, 0.2, 0.3, 0.4],
       [0.5, 0.6, 0.7, 0.8, 0.9]])
np.hstack((a,b)) #纵向
array([[0. , 1. , 2. , 3. , 4. , 0. , 0.1, 0.2, 0.3, 0.4],
       [5. , 6. , 7. , 8. , 9. , 0.5, 0.6, 0.7, 0.8, 0.9]])
np.concatenate((a,b),axis=1)
array([[0. , 1. , 2. , 3. , 4. , 0. , 0.1, 0.2, 0.3, 0.4],
       [5. , 6. , 7. , 8. , 9. , 0.5, 0.6, 0.7, 0.8, 0.9]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值