import numpy as np1.numpy的使用和array的属性
a=np.arange(10) print(a) print(type(a)) A=np.arange(10).reshape(2,5) print(A)
[0 1 2 3 4 5 6 7 8 9][[0 1 2 3 4] [5 6 7 8 9]]
import math
resull=[]
b=[3,6,9]
for i in b:
resull.append(math.sqrt(i))
print(resull)
[1.7320508075688772, 2.449489742783178, 3.0]
b=np.sqrt(a) print(b)
[0. 1. 1.41421356 1.73205081 2. 2.23606798 2.44948974 2.64575131 2.82842712 3. ]array的属性
np.shape(a) # 返回一个元组,里面10表示一维数组有10个元素
(10,)
a.shape
(10,)
np.shape(A) # 返回一个元组,里面(2,5)表示二维数组有2行5列
(2, 5)
A.shape
(2, 5)
np.size(a) # 表示数组中共有10个元素
10
a.size
10
np.size(A)# 表示数组中共有10个元素
10
A.size
10
np.ndim(a) # 表示数组维度1维
1
a.ndim
1
np.ndim(A) # 表示数组维度为2维
2
A.ndim
2
a.dtype # 表示数据类型
dtype('int32')
A.dtype
dtype('int32')
2.array数组创建(查看数组时几维数组看有多少个中括号[])
- 创建一维数组 []
a=np.array([1,2,3,4,5]) print(a) print(type(a))
[1 2 3 4 5]
- 创建二维数组 [[]]
a=np.array([[1,2,3,4],[5,6,7,8]]) print(a) print(type(a))
[[1 2 3 4] [5 6 7 8]]
- 创建三维数组 [[[],[],[]]]
a=np.array([[[1,2,3],[4,5,6],[7,8,9]]]) a
array([[[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]]])
- array函数中dtype的使用(dtype用于定义数据的类型)
a=np.array([[[1,2,3],[4,5,6],[7,8,9]]],dtype=float) a
array([[[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]]])
- array函数中ndim的使用(ndim用于定义创建几维数组3表示三维数组)
a=np.array([5,6,7],ndmin=3) a
array([[[5, 6, 7]]])3.使用arange创建数组(和range类似)
- range(start,end,step)
- arange(start,end,step,dtype) star起始值,默认0 end终止值(不包含) 俗称“左闭右开” step 步长 dtype类型
使用arange创建一维数组
a=np.arange(1,11) print(a)
[ 1 2 3 4 5 6 7 8 9 10]
设置step步长
a=np.arange(1,11,2) print(a)
[1 3 5 7 9]
设置dtype
a=np.arange(1,11,2,dtype=float) print(a)
[1. 3. 5. 7. 9.]
创建二维数组
a=np.arange(1,26).reshape(5,5) print(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 25]]4.随机数创建random
- 随机小数创建一维数组[0.0,1.0)
a=np.random.random(size=5) print(a)
[0.76575635 0.4622679 0.90888017 0.10400718 0.44326595]
- 随机小数创建二维数组[0.0,1.0)
a=np.random.random(size=(3,4)) # 三行四列 print(a)
[[0.08961231 0.53617719 0.57359731 0.59341485] [0.70260249 0.4702532 0.02616169 0.9761873 ] [0.14885767 0.53219576 0.81927635 0.06738613]]
- 随机小数创建三维数组[0.0,1.0)
a=np.random.random(size=(2,3,4)) # 表示2个三行四列 print(a)
[[[0.94210883 0.77365523 0.78644543 0.46229632] [0.93988891 0.00098664 0.06442574 0.19233556] [0.05869636 0.40118242 0.73710361 0.94576341]] [[0.66967561 0.43679552 0.77381332 0.07542394] [0.6531141 0.7895201 0.15254746 0.55551022] [0.22677999 0.43319106 0.59128927 0.43017043]]]
- 随机整数创建一维数组 randint
a=np.random.randint(6,size=10) # 生成10个数,范围在0-6不包含6之间 print(a)
[4 4 4 5 0 1 1 3 3 5]
- 随机整数二维数组 randint
a=np.random.randint(1,6,size=(2,3)) # 两行三列 print(a)
[[4 4 5] [4 3 1]]
- 随机小数三维数组
a=np.random.random(size=(2,3,3))*10 # 两个三行三列 print(a) print(type(a)) print(a.dtype) # 数组默认数据类型
[[[3.11048362 8.52335013 2.32628772] [4.65860357 9.12426174 3.98919878] [3.56791147 1.20368434 2.50500546]] [[9.47917872 9.42005041 9.90414945] [1.34195861 3.24970056 9.00671707] [6.94890604 8.0000247 6.8913351 ]]]float64
- 随机生成标准正态分布 randn 期望为0.0,方差为1.0
# 一维数组 a=np.random.randn(4) print(a)
[ 0.81410113 0.16452272 -0.42512614 1.31135624]
# 二维数组 a=np.random.randn(2,3) print(a)
[[ 0.89155777 -0.79185195 -1.80922833] [ 0.44119787 1.0291374 -0.09723107]]
# 三维数组 a=np.random.randn(2,3,4) print(a)
[[[-0.15049787 0.16932904 0.21391991 0.81210993] [ 0.39586213 1.02809831 -1.60976429 1.06427719] [ 0.48000161 2.02028157 0.4371479 0.84889536]] [[ 0.18759196 -0.25953362 -0.02832321 1.18824099] [-1.39171987 -1.04206583 0.76886666 1.73914125] [ 1.13091941 -0.89219323 0.72669587 -0.04163825]]]
- 指定期望和方差的正态分布 normal loc=0.0 期望 scale=1.0 方差 size=NOne 维度
# 一维数组 期望为0.0 方差为1.0 a=np.random.normal(size=5) print(a)
[-1.28225284 -0.18262699 1.95744626 -1.48940848 -0.31117008]
# 二维数组 期望为2 方差为3 a=np.random.normal(2,3,size=(3,3)) print(a)
[[-2.42635578 6.06350409 6.12848831] [-0.56033776 -0.28162224 4.09917604] [-0.37305497 4.77686604 5.244218 ]]5. ones和ones_like
np.ones(10,dtype=int) # 元素全部是1
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
np.ones((3,4))
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])
np.ones_like(a) # 根据传入的变量创建出和它一样形状的数组
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
np.ones_like(A)
array([[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1]])
6.zeros和zeros_like
np.zeros(10,dtype=int) # 数据全部是0
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
np.zeros((5,6))
array([[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.]])
np.zeros_like(a)
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
np.zeros_like(A)
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
7.empty和empty_like
- 数组数据没有定义,可能是随机数,也可能是0,不能使用数组中的数值
np.empty(15)
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.empty((2,3))
array([[0., 0., 0.],
[0., 0., 0.]])
np.empty_like(a)
array([-1384334336, 715, 0, 0, 7340142,
6619182, 0, 0, 0, 0])
np.empty_like(A)
array([[-1384334336, 715, 538970739, 757932064, 757935405],
[ 757935405, 538976266, 975206432, 1920098592, 1818196321]])
8.full和full_like
np.full(10,666) # 指定数组元素值为666
array([666, 666, 666, 666, 666, 666, 666, 666, 666, 666])
np.full((2,5),999)
array([[999, 999, 999, 999, 999],
[999, 999, 999, 999, 999]])
np.full_like(a,111)
array([111, 111, 111, 111, 111, 111, 111, 111, 111, 111])
np.full_like(A,777)
array([[777, 777, 777, 777, 777],
[777, 777, 777, 777, 777]])
9.数组间的运算
A=np.random.randint(1,10,size=(2,5)) A
array([[9, 2, 6, 9, 9],
[4, 8, 1, 3, 4]])
B=np.arange(10).reshape(2,5) B
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
C=np.arange(6).reshape(2,3) C
array([[0, 1, 2],
[3, 4, 5]])
A+B # 数组要一致才能进行运算
array([[ 9, 3, 8, 12, 13],
[ 9, 14, 8, 11, 13]])
A-B
array([[ 9, 1, 4, 6, 5],
[-1, 2, -6, -5, -5]])
A*2
array([[18, 4, 12, 18, 18],
[ 8, 16, 2, 6, 8]])
A-C
--------------------------------------------------------------------------- ValueError Traceback (most recent call last)in () ----> 1 A-C ValueError: operands could not be broadcast together with shapes (2,5) (2,3)
np.sin(A)
array([[ 0.41211849, 0.90929743, -0.2794155 , 0.41211849, 0.41211849],
[-0.7568025 , 0.98935825, 0.84147098, 0.14112001, -0.7568025 ]])



