欢迎光临散文网 会员登陆 & 注册

numpy数组初始化方法总结

2020-03-02 14:30 作者:青阳小栈  | 我要投稿

1 使用list初始化

  • a=np.array([[1,2,3],[4,5,6]],dtype='float32')

  • #a=[[1. 2. 3.],[4. 5. 6.]]

2 赋值与复制

(1)赋值

  • a=np.array([1,2,3])

  • b=a

  • print(b is a) #True

  •  

  • b[0]=0

  • print(a) #[0 2 3]

  • print(b) #[0 2 3]

  • print(b is a) #True

在赋值情形下,b 和 a 指向同一块地址,b 改变,a 也随着改变 。


  • a=np.array([1,2,3])

  • b=a[:2]

  • print(b is a) #False

  •  

  • b[0]=0

  • print(a) #[0 2 3]

  • print(b) #[0 2]

 在使用切片时,切片改变,原数据也会改变。


(2)复制


  • a=np.array([1,2,3])

  • b=a.copy()

  • print(b is a) #False

  •  

  • b[0]=0

  • print(a) #[1 2 3]

  • print(b) #[0 2 3]

 在复制情形下,b和a指向不同地址,b改变,a不会改变


3 随机数初始化

3.1 区间内随机数

(1)np.random.uniform(low=0.0, high=1.0, size=None)


简介:生成 [low,high) 内的 size 个随机数,默认 [0,1) 之间,size 是 int 型或元组


  • a=np.random.uniform() #产生[0,1)内的1个随机数

  • #a=0.1973408987805232

  •  

  • b=np.random.uniform(10,20,2) #产生[10,20)内的2个随机数

  • #b=[10.15492129 12.8762581]

  •  

  • c=np.random.uniform(1,5,(2,3)) #产生[1,5)内2*3个随机数

  • #c=[[1.89354111 4.01642541 1.63691704],[3.23261205 4.81380553 4.51288251]]

(2)np.random.rand(d0,d1,...,dn)


简介:生成 [0,1) 内的 d0*d1*...*dn 个浮点数,d0,d1,...,dn 表示数组维度


  • a=np.random.rand() #产生[0,1)内的1个随机数

  • #a=0.7114622255979923

  •  

  • b=np.random.rand(2) #产生[0,1)内的2个随机数

  • #b=[0.39094731 0.32324018]

  •  

  • c=np.random.rand(2,3) #产生[0,1)内的2*3个随机数

  • #c=[[0.30305566 0.70335946 0.71778137],[0.03069973 0.20145633 0.70092122]]

(3)np.random.randint(low, high=None, size=None, dtype=’l’)


简介:生成 [low,high) 内的 size 个整型随机数,默认1个 [0,low) 内的随机整数


  • a=np.random.randint(10) #产生[0,10)内的1个随机整数

  • #a=6

  •  

  • b=np.random.randint(10,20) #产生[10,20)内的1个随机整数

  • #b=14

  •  

  • c=np.random.randint(1,5,(2,3)) #产生[1,5)内的2*3个随机整数

  • #c=[[4 2 2],[3 2 1]]

3.2  随机全排列

(1) np.random.permutation(n)


简介:若 n 为 int,生成 0~n-1 的一个随机排列;若 n 为数组,生成此数组的一个随机排列


  • a=np.random.permutation(10)

  • #a=[5 9 6 8 7 4 0 3 1 2]

  •  

  • x=np.array([2.2,4.4,6.6,8.8])

  • b=np.random.permutation(x)  #x不变,b随机

  • #b=[6.6 2.2 4.4 8.8]

(2)np.random.shuffle(arr)


简介:将数组 arr 随机打乱


  • a=np.array([1,3,5,7,9,0,2,4,6,8])

  • np.random.shuffle(a)

  • #a=[6 5 9 8 0 3 4 2 1 7]

3.3 随机部分排列

np.random.choice(a, size=None, replace=True, p=None)


简介:若 a 为 int,从 0~a-1 中随机挑选 size 个数排列;若 a 为数组,则从此数组中随机挑选 size 个数排列。replace 表示是否允许元素重复


  • a=np.random.choice(10,7,replace=False)

  • #a=[2 7 0 1 8 4 3]

  •  

  • x=['a','b','c','d','e','f','g','h','i','j']

  • b=np.random.choice(x,5,replace=False)

  • #b=['b' 'd' 'c' 'i' 'e']

4 全0与全1初始化

  • a=np.zeros(5,dtype='int32')

  • #a=[0 0 0 0 0]

  •  

  • b=np.zeros((2,3),dtype='int32')

  • #b=[[0 0 0],[0 0 0]]

  •  

  • c=np.ones(5,dtype='int32')

  • #c=[1 1 1 1 1]

  •  

  • d=np.ones((2,3),dtype='int32')

  • #d=[[1 1 1],[1 1 1]]

5 等步长连续序列初始化

(1)np.arange(min,max,step=1)


简介:生成 [min,max) 之间步长为 step 的序列,步长默认为1


  • a=np.arange(2,6)

  • #a=[2 3 4 5]

  •  

  • b=np.arange(2,3,0.2)

  • #b=[2. 2.2 2.4 2.6 2.8]

(2)np.linspace(min,max,num=50)


简介:生成 [min,max] 之间长度为num的序列,长度默认为50


  • a=np.linspace(6,8,5)

  • #a=[6. 6.5 7. 7.5 8.]

  •  

  • b=np.linspace(1,99)

  • #b=

  • #[1.  3.  5.  7.  9.  11. 13. 15. 17. 19. 21. 23. 25. 27. 29. 31. 33. 35.

  • # 37. 39. 41. 43. 45. 47. 49. 51. 53. 55. 57. 59. 61. 63. 65. 67. 69. 71.

  • # 73. 75. 77. 79. 81. 83. 85. 87. 89. 91. 93. 95. 97. 99.]



numpy数组初始化方法总结的评论 (共 条)

分享到微博请遵守国家法律