一、概要
Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,NumPy数组是一个多维数组对象,称为ndarray,其中:
NumPy数组的下标从0开始。
同一个NumPy数组中所有元素的类型必须是相同的。如int,str,float
二、数组结构——ndarray的基本属性操作
加减乘除
importnumpyasnp
array_list = [1,2,3,4,5]
array = np.array(array_list)
print(array+1)
=====》》[2 3 4 5 6]
基本用法
#矩阵多维格式
tan_array = np.array([[1,2],
[3,4],
[4,5]])
print(tan_array.shape)#几行几列 ====》(3 2)
print(tan_array.size)#个数 ====》6
print(tan_array.ndim)#几维 =====》2
取数据(切片,同python一样)
print(tan_array[2,1])#取矩阵中的数据 ----> 5
tan_array[1,1] =10
print(tan_array)#赋值 -----> [[1 2] [3 10] [4 5]]
print(tan_array[1])#取第一行的数据 ----> [3 10]
print(tan_array[:,1])#取第几列的数据 ----->[2 10 5]
print(tan_array[,:2])#取某一行前两个数据 [1 2]
ndarray赋值
array1= np.array([1,2,3])
array2 =array1
array2[1] =100
print(array2)
print(array1)
========》[ 1 100 3]
========》[ 1 100 3]
修改了array2,没有修改array1,可是array1也会跟着改变,所以为了避免这种情况,使用
array2= array1.copy()
运行后就发现
array2 =======》 [ 1 100 3]
array1 =======》 [1 2 3]
抽取想要的数据
ndarray有arange、random等模块,可以生成一个array
number_list = np.arange(0, 100, 10)
print(number_list)
print(number_list[np.where(number_list>50)])
=====》 [ 0 10 20 30 40 50 60 70 80 90]
=====》 [60 70 80 90 ]
首先生成一个等差数列,然后通过np.where获取到number_list中大于50的数字所在ndarray中的位置,通过切片取值的方法得到想要
三、数值运算
2018.4.19更新
四、数组生成方法(输出后看着像是列表其实类型是)
1. 直接生成
a = np.array([1,3,4,6,7,8])
[1 3 4 6 7 8]
b = np.array([[1,2],[6,7],[9,5]])
[[1 2]
[6 7]
[9 5]]
2.内置方法生成
c = np.arange(10) #生成10以内的数组 or np.arrange(0,9)
[0 1 2 3 4 5 6 7 8 9]
d = np.arange(,9).reshape(3,3)#重新设定创建数组的维度-3行3列
[[0 1 2]
[3 4 5]
[6 7 8]]
e = np.linspace(,10,10) #生成数组:0-100之间10个数
[ 0. 11.11111111 22.22222222 33.33333333 44.44444444
55.55555556 66.66666667 77.7777777888.88888889 100. ]
3.nump.random函数生成
#所有的值都是从到1,三行两列
print(np.random.rand(3,2))
#矩阵的shape值-几行几列,0-10以内的数组
print(np.random.randint(10,size=(5,4)))
print(np.random.randint(,10,(3,3)))
#0-10之间选择3个数
print(np.random.randint(,10,3))
#返回一个0-1的随机浮点数
print(np.random.random_sample())
print(np.random.random())
print(np.random.random(3,3)) #随机生成3行3列的数组(0-1大小)
print(np.random.sample())
#生成一个0-100以内的浮点数
print(np.random.uniform(,100))
4.通过初始化方法生成
f = np.zeros(4) #0初始化一个数组
[ 0. 0. 0. 0.]
f.fill(9) #填充
[ 9. 9. 9. 9.]
g = np.ones((3,3)) #1初始化一个数组
[[ 1. 1. 1.]
[ 1. 1. 1.]
[ 1. 1. 1.]]
g = np.ones((3,3)) *8
[[ 8. 8. 8.]
[ 8. 8. 8.]
[ 8. 8. 8.]]
五、numpy使用练习
#倒叙排序
print(np.arange(10,15,1)[::-1])
[14 13 12 11 10]
#查看数组中不为0的索引
print(np.nonzero([1,2,3,4,5,9,,,,,,2]))
(array([ 0, 1, 2, 3, 4, 5, 11], dtype=int64),)
#在数组最外层加一圈0
a = np.ones((5,5))
print(np.pad(a,pad_width=1,
mode='constant',constant_values=))
#取得两个数组中相同的值
#统计数组中每个数值出现的次数
f = np.array([1,2,3,4,5,1,2,2,1])
print(np.bincount(f))
=====> [0 3 3 1 1 1]
#统计数组中最常出现的数字
#快速查找Top-K的数据
领取专属 10元无门槛券
私享最新 技术干货