numpy模块总结二

numpy模块总结二,第1张

numpy模块总结二

numpy模块总结
  • 1. numpy中数组/矩阵的转置
    • 1.1 交换轴的位置 t.swapaxes(axis1,axis0)
    • 1.2 转置方法一 t.transpose()
    • 1.3 转置方法二 t.T
  • 2. numpy中数组/矩阵的索引和切片
    • 2.1 取数组/矩阵中的一行/一列
    • 2.2 连续取数组/矩阵中的多行/多列
    • 2.3 取数组/矩阵中不连续的多行/多列
    • 2.4 取单行、单列的交点
    • 2.5 取多行、多列的交点
    • 2.6 取不连续多行、多列的相交点
  • 3. numpy中数组/矩阵中元素值的修改
    • 3.1 修改数组/矩阵单个元素值、某行、某列的值
    • 3.2 根据条件修改数组/矩阵中元素的值
      • 3.2.1 一般条件
      • 3.2.2 三元条件
    • 3.3 数组/矩阵的布尔索引
    • 3.4 numpy中的裁剪clip()
  • 4. numpy中的nan和inf
    • 4.1 概念
    • 4.2 指定nan或者inf
    • 4.3 numpy中nan的注意点
  • 5. numpy中常用的统计函数
  • 6.数组/矩阵的拼接、分割
    • 6.1 数组/矩阵的拼接
      • 6.1.1 竖直拼接
      • 6.1.2 水平拼接
    • 6.2 数组/矩阵的分割
      • 6.2.1 水平分割hsplit()
      • 6.2.2 垂直分割vsplit()
      • 6.2.3 指定轴分割split()
      • 6.2.4 深度分割dsplit()
  • 7. 数组/矩阵行列交换
  • 8. numpy其它实用方法
  • 9. numpy 生成随机数

1. numpy中数组/矩阵的转置

转置是数组/矩阵的一种变换,简单的说就是在数组/矩阵对角线方向交换数据。

1.1 交换轴的位置 t.swapaxes(axis1,axis0)
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a1 = a.swapaxes(1, 0)
print("转置后得到a1:n", a1)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	转置后得到a1:
		 [[ 1  7 13]
		 [ 2  8 14]
		 [ 3  9 15]
		 [ 4 10 16]
		 [ 5 11 17]
		 [ 6 12 18]]
1.2 转置方法一 t.transpose()
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a2 = a.transpose()
print("转置后得到a2:n", a2)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]

	转置后得到a2:
		 [[ 1  7 13]
		 [ 2  8 14]
		 [ 3  9 15]
		 [ 4 10 16]
		 [ 5 11 17]
		 [ 6 12 18]]

1.3 转置方法二 t.T
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a3 = a.T
print("转置后得到a3:n", a3)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]

	转置后得到a3:
		 [[ 1  7 13]
		 [ 2  8 14]
		 [ 3  9 15]
		 [ 4 10 16]
		 [ 5 11 17]
		 [ 6 12 18]]
2. numpy中数组/矩阵的索引和切片 2.1 取数组/矩阵中的一行/一列
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

#a1 = a[1,:]
a1 = a[1]
print("取一行得到的结果:n", a1)

a2 = a[:, 1]
print("取一列得到的结果:n", a2)


执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	取一行得到的结果:
		 [ 7  8  9 10 11 12]
	取一列得到的结果:
		 [ 2  8 14]
2.2 连续取数组/矩阵中的多行/多列
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

#a1 = a[1:3,:]
a1 = a[1:3]
print("取多行得到的结果:n", a1)

a2 = a[:, 1:3]
print("取多列得到的结果:n", a2)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	取一行得到的结果:
		 [[ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	取一列得到的结果:
		 [[ 2  3]
		 [ 8  9]
		 [14 15]]
2.3 取数组/矩阵中不连续的多行/多列
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

# a1 = a[[0,2],:]
a1 = a[[0, 2]]
print("取不连续多行得到的结果:n", a1)

a2 = a[:, [0, 2, 5]]
print("取不连续多列得到的结果:n", a2)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	取不连续多行得到的结果:
		 [[ 1  2  3  4  5  6]
		 [13 14 15 16 17 18]]
	取不连续多列得到的结果:
		 [[ 1  3  6]
		 [ 7  9 12]
		 [13 15 18]]
2.4 取单行、单列的交点
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a1 = a[1, 2]
print("取不连续多行得到的结果:n", a1)
print(type(a1))

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	取不连续多行得到的结果:
		 9
		

2.5 取多行、多列的交点
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a1 = a[0:2, 1:4]
print("取连续多行、多列交叉区域得到的结果:n", a1)
print(type(a1))

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	取连续多行、多列交叉区域得到的结果:
		 [[ 2  3  4]
		 [ 8  9 10]]
		
2.6 取不连续多行、多列的相交点
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a1 = a[[0,2,1], [1,3,5]]
print("取不连续多行、多列交叉点得到的结果:n", a1)
print(type(a1))

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	取不连续多行、多列交叉点得到的结果:
		 [ 2 16 12]
		
3. numpy中数组/矩阵中元素值的修改 3.1 修改数组/矩阵单个元素值、某行、某列的值
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a[0, :] = 999999
print("修改第0行的值得到的结果:n", a)
a[:, 0:2] = 0
print("修改第0列、第1列的值得到的结果:n", a)
a[0,0]=6666666
print("修改单个元素的值得到的结果:n",a)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	修改第0行的值得到的结果:
		 [[999999 999999 999999 999999 999999 999999]
		 [     7      8      9     10     11     12]
		 [    13     14     15     16     17     18]]
	修改第0列、第1列的值得到的结果:
		 [[     0      0 999999 999999 999999 999999]
		 [     0      0      9     10     11     12]
		 [     0      0     15     16     17     18]]
	修改单个元素的值得到的结果:
		 [[6666666       0  999999  999999  999999  999999]
		 [      0       0       9      10      11      12]
		 [      0       0      15      16      17      18]]

3.2 根据条件修改数组/矩阵中元素的值 3.2.1 一般条件
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a[a > 3] = 0
print("根据修改条件得到的结果:n", a)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	根据修改条件得到的结果:
		 [[1 2 3 0 0 0]
		 [0 0 0 0 0 0]
		 [0 0 0 0 0 0]]
3.2.2 三元条件
a1 = np.where(条件,赋值1,赋值2)  # 如果条件成立,符合条件
								 # 的元素赋值为“赋值1”,不
								 # 符合条件的赋值为“赋值2”
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a1 = np.where(a < 7, 0, 7)
print("根据三元修改条件得到的结果:n", a1)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	根据三元修改条件得到的结果:
		 [[0 0 0 0 0 0]
		 [7 7 7 7 7 7]
		 [7 7 7 7 7 7]]
3.3 数组/矩阵的布尔索引
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

a1 = a < 9
print("a的布尔索引:n", a1)
print(a1.dtype)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	a的布尔索引:
		 [[ True  True  True  True  True  True]
		 [ True  True False False False False]
		 [False False False False False False]]
		 bool
3.4 numpy中的裁剪clip()

函数原型:

numpy.clip(a, a_min, a_max, out=None)
	# 此函数作用是将a中的元素的值限制在a_min 到 a_max之间,输出结果传给out

函数调用方法:
此函数的调用方法有多种

import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("3行6列的矩阵为:n", a)

# 将裁剪后的结果赋值给a1
a1 = a.clip(3, 9)
print("a.clip(3, 9)的结果为:n",a1)

# 将裁剪后的结果赋值给a2
a2 = np.clip(a,3,9)
print("np.clip(a,3,9)的结果为:n",a2)

# 将裁剪后的结果仍然赋值给a
np.clip(a,3,9,out=a)
print("np.clip(a,3,9,out=a)的结果:n", a)

执行结果:
	3行6列的矩阵为:
		 [[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	a.clip(3, 9)的结果为:
		 [[3 3 3 4 5 6]
		 [7 8 9 9 9 9]
		 [9 9 9 9 9 9]]
	np.clip(a,3,9)的结果为:
		 [[3 3 3 4 5 6]
		 [7 8 9 9 9 9]
		 [9 9 9 9 9 9]]
	np.clip(a,3,9,out=a)的结果:
		 [[3 3 3 4 5 6]
		 [7 8 9 9 9 9]
		 [9 9 9 9 9 9]]

4. numpy中的nan和inf 4.1 概念

(1)nan(NAN or Nan):not a number,表示不是一个数字。
numpy中出现nan的情况:
(1.1)读取本地文件为float的时候,如果有缺失,就会出现nan。
(1.2)做了一个不合适的计算的时候,比如无穷大减去无穷大。

(2)inf (-inf or inf):infinity,inf表示正无穷,-inf表示负无穷。
numpy中出现inf的情况:
(2.1)比如一个数字除以0。

4.2 指定nan或者inf
import numpy as np

b = np.nan
print(b)
print(type(b))

c = np.inf
print(c)
print(type(c))
4.3 numpy中nan的注意点

(1)两个nan是不相等的。

print(np.nan != np.nan)

执行结果:
	True

(2)利用(1)的特性可以判断数组/矩阵中nan的个数。

import numpy as np

a = np.array(range(1, 19), dtype=float).reshape(3, 6)
print("3行6列的矩阵为:n", a)

# 注意:在给数组/矩阵中的元素赋nan时,要统一元素的数据类型为float
a[0:2,0:2]=np.nan
print("赋值nan后的结果:n",a)
print("a中nan的个数为:n",np.count_nonzero(a!=a))

执行结果:
	3行6列的矩阵为:
		 [[ 1.  2.  3.  4.  5.  6.]
		 [ 7.  8.  9. 10. 11. 12.]
		 [13. 14. 15. 16. 17. 18.]]
	赋值nan后的结果:
		 [[nan nan  3.  4.  5.  6.]
		 [nan nan  9. 10. 11. 12.]
		 [13. 14. 15. 16. 17. 18.]]
	a中nan的个数为: 4

(3)使用 np.isnan(a) 判断某个数字是否为nan。

import numpy as np

a = np.array(range(1, 19), dtype=float).reshape(3, 6)
print("3行6列的矩阵为:n", a)

# 判断数组/矩阵中的元素是否为nan,并对数值为nan的元素进行 *** 作
a[a < 4] = np.nan
print("元素赋值为nan后的结果:n",a)

a[np.isnan(a)] = 1
print("判断a中元素的值是否为nan,并将值为nan的元素赋值为1:n",a)

# 单一数据赋值为nan
b = np.nan
print(np.isnan(b))

执行结果:
	3行6列的矩阵为:
		 [[ 1.  2.  3.  4.  5.  6.]
		 [ 7.  8.  9. 10. 11. 12.]
		 [13. 14. 15. 16. 17. 18.]]
	元素赋值为nan后的结果:
		 [[nan nan nan  4.  5.  6.]
		 [ 7.  8.  9. 10. 11. 12.]
		 [13. 14. 15. 16. 17. 18.]]
	判断a中元素的值是否为nan,并将值为nan的元素赋值为1:
		 [[ 1.  1.  1.  4.  5.  6.]
		 [ 7.  8.  9. 10. 11. 12.]
		 [13. 14. 15. 16. 17. 18.]]
	True

(4)nan和任何值计算都得nan。

5. numpy中常用的统计函数
(1)求和:t.sum(axis=None)
(2)均值:t.mean(a,axis=None)
(3)中值:np.median(t,axis=None)
(4)最大值:t.max(axis=None)
(5)最小值:t.min(axis=None)
(6)极值:np.ptp(t,axis=None),即最大值与最小值只差
(7)标准差:t.std(axis=None),不加axis的话默认返回所有元素的标准差,
							加axis的话返回某一axis方向的标准差。
import numpy as np

a = np.array(range(1, 19), dtype=float).reshape(3, 6)
print("3行6列的矩阵为:n", a)

print("求和:",a.sum(axis=0))
print("最大值:",a.max(axis=0))
print("最小值:",a.min(axis=0))
print("均值:",a.mean(axis=0))
print("中值:",np.median(a,axis=0))
print("极值:",np.ptp(a,axis=0))
print("标准差:",a.std(axis=0))

执行结果:
	3行6列的矩阵为:
		 [[ 1.  2.  3.  4.  5.  6.]
		 [ 7.  8.  9. 10. 11. 12.]
		 [13. 14. 15. 16. 17. 18.]]
		 
	求和: [21. 24. 27. 30. 33. 36.]
	最大值: [13. 14. 15. 16. 17. 18.]
	最小值: [1. 2. 3. 4. 5. 6.]
	均值: [ 7.  8.  9. 10. 11. 12.]
	中值: [ 7.  8.  9. 10. 11. 12.]
	极值: [12. 12. 12. 12. 12. 12.]
	标准差: [4.89897949 4.89897949 4.89897949 4.89897949 4.89897949 4.89897949]

6.数组/矩阵的拼接、分割 6.1 数组/矩阵的拼接 6.1.1 竖直拼接
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("a:n", a)

b = np.array(range(10, 190, 10), dtype=int).reshape(3, 6)
print("b:n", b)

v_ab = np.vstack((a, b))
print("竖直拼接:n", v_ab)

执行结果:
	a:
		[[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	b:
		 [[ 10  20  30  40  50  60]
		 [ 70  80  90 100 110 120]
		 [130 140 150 160 170 180]]
	竖直拼接:
		 [[  1   2   3   4   5   6]
		 [  7   8   9  10  11  12]
		 [ 13  14  15  16  17  18]
		 [ 10  20  30  40  50  60]
		 [ 70  80  90 100 110 120]
		 [130 140 150 160 170 180]]
	

6.1.2 水平拼接
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("a:n", a)

b = np.array(range(10, 190, 10), dtype=int).reshape(3, 6)
print("b:n", b)

h_ab = np.hstack((a,b))
print("水平拼接:n", h_ab)

执行结果:
	a:
		[[ 1  2  3  4  5  6]
		 [ 7  8  9 10 11 12]
		 [13 14 15 16 17 18]]
	b:
		 [[ 10  20  30  40  50  60]
		 [ 70  80  90 100 110 120]
		 [130 140 150 160 170 180]]
	水平拼接:
		 [[  1   2   3   4   5   6  10  20  30  40  50  60]
		 [  7   8   9  10  11  12  70  80  90 100 110 120]
		 [ 13  14  15  16  17  18 130 140 150 160 170 180]]
6.2 数组/矩阵的分割 6.2.1 水平分割hsplit()

函数原型:

hsplit(ary, indices_or_sections)
		# ary表示待分割数组/矩阵
		# indices_or_sections为一个整数或列表,表示将数组/矩阵分割
		# 成几份或根据列表中的位置分割成几份。
import numpy as np

a = np.array(range(1, 19), dtype=int).reshape(3, 6)
print("a:n", a)

# 将数组/矩阵a沿着水平方向(axis=1)平均分成2份即2个数组/矩阵
b, c = np.hsplit(a, 2)
print("分割后的结果:")
print("b:n", b)
print("c:n", c)

# 将数组/矩阵a根据分割位置[2,3,4]分割成4份即4个数组/矩阵
d, e, f ,g= np.hsplit(a, [2, 3, 4])
print("分割后的结果:")
print("d:n", d)
print("e:n", e)
print("f:n", f)
print("g:n", g)

执行结果:
		a:
			 [[ 1  2  3  4  5  6]
 			[ 7  8  9 10 11 12]
 			[13 14 15 16 17 18]]
		分割后的结果:
			b:
			 	[[ 1  2  3]
 				[ 7  8  9]
			 	[13 14 15]]
			c:
			 	[[ 4  5  6]
 				[10 11 12]
 				[16 17 18]]
		分割后的结果:
			d:
 				[[ 1  2]
 				[ 7  8]
 				[13 14]]
			e:
 				[[ 3]
 				[ 9]
 				[15]]
			f:
 				[[ 4]
 				[10]
 				[16]]
			g:
 				[[ 5  6]
 				[11 12]
 				[17 18]]


6.2.2 垂直分割vsplit()

函数原型:

vsplit(ary, indices_or_sections)
		# ary表示待分割数组/矩阵
		# indices_or_sections为一个整数或列表,表示将数组/矩阵分割
		# 成几份或根据列表中的位置分割成几份。
import numpy as np

a = np.array(range(1, 25), dtype=int).reshape(4, 6)
print("a:n", a)

# 将数组/矩阵a沿着水平方向(axis=1)平均分成2份即2个数组/矩阵
b, c = np.vsplit(a, 2)
print("分割后的结果:")
print("b:n", b)
print("c:n", c)

# 将数组/矩阵a根据分割位置[2,3,4]分割成4份即4个数组/矩阵
d, e, f, g = np.vsplit(a, [1, 2, 3])
print("分割后的结果:")
print("d:n", d)
print("e:n", e)
print("f:n", f)
print("g:n", g)

执行结果:
		a:
 			[[ 1  2  3  4  5  6]
 			[ 7  8  9 10 11 12]
 			[13 14 15 16 17 18]
 			[19 20 21 22 23 24]]
		分割后的结果:
			b:
 				[[ 1  2  3  4  5  6]
 				[ 7  8  9 10 11 12]]
			c:
 				[[13 14 15 16 17 18]
 				[19 20 21 22 23 24]]
		分割后的结果:
			d:
 				[[1 2 3 4 5 6]]
			e:
 				[[ 7  8  9 10 11 12]]
			f:
 				[[13 14 15 16 17 18]]
			g:
 				[[19 20 21 22 23 24]]

6.2.3 指定轴分割split()

函数原型:

split(ary, indices_or_sections, axis=0)
		# ary表示待分割的数组/矩阵。
		# indeices_or_sections表示整数或列表,可选参数。
		# axis表示轴即分割方向,可选参数。
import numpy as np

a = np.array(range(1, 25), dtype=int).reshape(4, 6)
print("a:n", a)

# 将数组/矩阵a沿着水平方向(axis=0)平均分成2份即2个数组/矩阵
b, c = np.split(a, 2, axis=0)
print("分割后的结果:")
print("b:n", b)
print("c:n", c)

# 将数组/矩阵a根据分割位置[2,3,4],沿着axis=1方向分割成4份即4个数组/矩阵
d, e, f, g = np.split(a, [1, 2, 3], axis=1)
print("分割后的结果:")
print("d:n", d)
print("e:n", e)
print("f:n", f)
print("g:n", g)

执行结果:
		a:
 			[[ 1  2  3  4  5  6]
			[ 7  8  9 10 11 12]
 			[13 14 15 16 17 18]
 			[19 20 21 22 23 24]]
		分割后的结果:
			b:
 				[[ 1  2  3  4  5  6]
 				[ 7  8  9 10 11 12]]
			c:
 				[[13 14 15 16 17 18]
 				[19 20 21 22 23 24]]
		分割后的结果:
			d:
 				[[ 1]
 				[ 7]
 				[13]
 				[19]]
			e:
 				[[ 2]
 				[ 8]
 				[14]
 				[20]]
			f:
 				[[ 3]
 				[ 9]
 				[15]
 				[21]]
			g:
 				[[ 4  5  6]
 				[10 11 12]
 				[16 17 18]
 				[22 23 24]]

6.2.4 深度分割dsplit()

深度分割的作用是将三维数组/矩阵沿着axis=2方向分割成若干个子数组/矩阵。

import numpy as np

a = np.array(range(1, 25), dtype=int).reshape(2, 3, 4)
print("a:n", a)

# 将数组/矩阵a沿着axis=2)方向分成4个数组/矩阵
# b, c, d, e = np.dsplit(a, 4)
b, c, d, e = np.dsplit(a, [1, 2, 3])
print("分割后的结果:")
print("b:n", b)
print("c:n", c)
print("d:n", d)
print("e:n", e)

执行结果:
		a:
 			[[[ 1  2  3  4]
  			[ 5  6  7  8]
  			[ 9 10 11 12]]

 			[[13 14 15 16]
  			[17 18 19 20]
  			[21 22 23 24]]]
		分割后的结果:
			b:
 				[[[ 1]
  				[ 5]
  				[ 9]]

 				[[13]
  				[17]
  				[21]]]
			c:
 				[[[ 2]
  				[ 6]
  				[10]]

 				[[14]
  				[18]
  				[22]]]
			d:
 				[[[ 3]
  				[ 7]
  				[11]]

 				[[15]
  				[19]
  				[23]]]
			e:
 				[[[ 4]
  				[ 8]
  				[12]]

 				[[16]
  				[20]
  				[24]]]

7. 数组/矩阵行列交换
import numpy as np

a = np.array(range(1, 25), dtype=int).reshape(4, 6)
print("a:n", a)

a[[1, 2], :] = a[[2, 1], :]
print("交换后的结果:")
print("a:n", a)

执行结果:
	a:
 		[[ 1  2  3  4  5  6]
 		[ 7  8  9 10 11 12]
 		[13 14 15 16 17 18]
 		[19 20 21 22 23 24]]
	交换后的结果:
	a:
 		[[ 1  2  3  4  5  6]
 		[13 14 15 16 17 18]
 		[ 7  8  9 10 11 12]
 		[19 20 21 22 23 24]]

8. numpy其它实用方法

(1)获取最大、最小值的下标索引:
(1.1)np.argmax(t, axis=0)
(1.2)np.argmin(t, axis=0)
(2)创建元素均为0的数组/矩阵np.zeros((3,4),dtype=int)
(3)创建元素均为1的数组/矩阵np.ones((3,4),dtype=int)
(4)创建对角线元素为1的单位矩阵np.eye(3)

import numpy as np

a = np.array(range(1, 25), dtype=int).reshape(4, 6)
print("a:n", a)
print("求axis=0方向的最大值的下标索引n", np.argmax(a, axis=0))
print("求axis=1方向的最小值的下标索引:n", np.argmin(a, axis=1))
print("创建全0数组/矩阵n", np.zeros((3, 4), dtype=int))
print("创建全1数组/矩阵:n", np.ones((3, 4), dtype=int))
print("创建单位矩阵:n", np.eye(3, dtype=int))

执行结果:
	a:
 		[[ 1  2  3  4  5  6]
 		[ 7  8  9 10 11 12]
 		[13 14 15 16 17 18]
 		[19 20 21 22 23 24]]
 		
	求axis=0方向的最大值的下标索引
 		[3 3 3 3 3 3]
 		
	求axis=1方向的最小值的下标索引:
 		[0 0 0 0]
 		
	创建全0数组/矩阵
 		[[0 0 0 0]
 		[0 0 0 0]
 		[0 0 0 0]]
 		
	创建全1数组/矩阵:
 		[[1 1 1 1]
 		[1 1 1 1]
 		[1 1 1 1]]
 		
	创建单位矩阵:
 		[[1 0 0]
 		[0 1 0]
 		[0 0 1]]

9. numpy 生成随机数 参数解释np.random.rand(维度)创建xxx维度的均匀分布的随机数组,浮点数,范围0~1np.random.randn(维度)创建xxx维度的标准正态分布随机数组,浮点数,平均数0,标准差1np.random.randint(low,high,(shape))从给定的上下限的范围内随机选取整数,low下限,high上限,(shape)形状/维度np.random.uniform(low,high,(size))产生具有均匀分布的数组,low起始值,high结束值,(size)形状/维度np.random.normal(loc,scale,(size))从指定正态分布中随机抽取样本,分布中心loc,标准差scale,(size)形状/维度np.random.seed(种子值)随机数种子。因为计算机生成的是伪随机数,所以通过设定相同的随机数种子,可以每次生成相同的随机数。
import numpy as np

# 加上随机种子后,每次产生的随机数可以保持不变
np.random.seed(10)
print("均匀分布随机数组:n",np.random.rand(3,4))
print("给定上下限的整数随机数组:n",np.random.randint(1,10,(3,3)))
print("标准正态随机数组:n",np.random.randn(3,3))
print("均匀分布随机数组:n",np.random.uniform(1,10,(3,3)))
print("正态分布中随机抽取样本,设置分布中心、标准差、形状:n",np.random.normal(0,1,(3,4)))

执行结果:
	均匀分布随机数组:
 		[[0.77132064 0.02075195 0.63364823 0.74880388]
 		[0.49850701 0.22479665 0.19806286 0.76053071]
 		[0.16911084 0.08833981 0.68535982 0.95339335]]
	给定上下限的整数随机数组:
 		[[7 9 2]
 		[9 5 2]
 		[4 7 6]]
	标准正态随机数组:
 		[[-1.13660221  0.13513688  1.484537  ]
 		[-1.07980489 -1.97772828 -1.7433723 ]
 		[ 0.26607016  2.38496733  1.12369125]]
	均匀分布随机数组:
 		[[8.24700877 5.69482437 9.17783993]
 		[3.8731248  1.81413414 3.70630051]
 		[2.02585926 8.45813194 1.42206687]]
	正态分布中随机抽取样本,设置分布中心、标准差、形状:
 		[[ 1.67262221  0.80705192  2.14180538 -0.49561818]
 		[ 0.52563742 -0.38964647  0.9372965  -0.8169742 ]
 		[ 1.01961544 -0.34143633  0.7512814  -0.36225179]]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5491116.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存