NumPy_1
Posted bigstrawberrywakaka
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy_1相关的知识,希望对你有一定的参考价值。
numpy
numpy是针对python一个扩充程序库,支持高级大量的维度数组和矩阵运算,此外也针对数组运算提供大量的数学函数库。
ndarray(N维数组对象)是一个其中所有元素类型必须相同的多维容器,每个数组有一个shape(代表各维度大小的元组)和一个dtype(一个用于说明数组类型的对象).
1 import numpy as np 2 #创建ndarray 3 data1 = [6, 1.2, 3, 0, -1] 4 array1 = np.array(data1) 5 print(array1) 6 #嵌套序列,如列表将会被转化成一个多维数组 7 data2 = [[1, 2, 3, 4],[5, 6, 7, 8]] 8 array2 = np.array(data2) 9 print(array2) 10 print(array2.ndim) 11 print(array2.shape) 12 print(array1.dtype) 13 print(array2.dtype) 14 #利用函数新建数组 15 array3 = np.zeros(10) 16 print(array3) 17 array4 = np.zeros((3, 6)) 18 print(array4) 19 array5 = np.empty((2, 3, 2)) 20 #返回0数组不安全,返回的都是垃圾值 21 print(array5) 22 #arange函数类似range函数 23 array6 = np.arange(15) 24 print(array6)
ndarray数据类型:
dtype可以直接映射到相应的机器表示
利用ndarray的astype()显示转换其dtype:
1 import numpy as np 2 #int64转float64 3 arr = np.array([1, 2, 3, 4, 5]) 4 print(arr.dtype) 5 float_arr = arr.astype(np.float64) 6 print(float_arr.dtype) 7 #float64转int32,小数被截断 8 arr2 = np.array([1.1, 2.2, 3.3, 4.4, 5.5]) 9 print(arr2.dtype) 10 int_arr2 = arr.astype(np.int32) 11 print(int_arr2) 12 #字符串数组转换为数值形式 13 arr3 = np.array([‘1.1‘,‘-2.2‘,‘3.4‘],dtype = np.string_) 14 float_arr3 = arr3.astype(float) 15 print(float_arr3) 16 #dtype的另外一个用法 17 int_array = np.arange(10) 18 calibers = np.array([.22, .270, .357, .380, .44, .50], dtype=np.float64) 19 print(int_array.astype(calibers.dtype))
基本的索引和切片:
跟列表最大的区别是,数组切片是原始数组的视图,这也就是说视图上的任何修改都会直接反映到原数组上。
1 import numpy as np 2 arr = np.arange(10) 3 arr[5:8] = 1 4 print(arr) 5 arr_slice = arr[5:8] 6 arr_slice[1] = 3 7 print(arr)
可以看到arr_slice[5:8]改变,arr也随之改变
注意:如果你实在想要ndarray切片的副本而不是视图,必须进行显式复制,arr[5:8].copy()。
如果你实在想要ndarray切片的副本而不是视图,必须进行显式复制,arr[5:8].copy()。
切片索引:
高维度切片索引就不是列表那么玩儿了
ndarray是沿着一个轴向切片选取元素的。
1 import numpy as np 2 arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]]) 3 print(arr2d[:2]) 4 #传入多个切片 5 print(arr2d[:2, 1:]) 6 #将整数索引和切片混合,得到低维度的切片 7 print(arr2d[1, :2]) 8 #只有冒号表示选取整个轴 9 print(arr2d[:, :1])
运行结果:
[[1 2 3] [4 5 6]] [[2 3] [5 6]] [4 5] [[1] [4] [7]] [Finished in 0.3s]
布尔值索引:
1 import numpy as np 2 names = np.array([‘小明‘,‘小红‘,‘小杜‘,‘小雪‘,‘小刚‘,‘小狗‘,‘小杜‘]) 3 #numpy.random中的randn函数生成正态分布的随机数据 4 data = np.random.randn(7,4) 5 print(names) 6 print(data) 7 print( names == ‘小杜‘) 8 #布尔型数组索引 9 print(data[names == ‘小杜‘])
未完待续。。。
以上是关于NumPy_1的主要内容,如果未能解决你的问题,请参考以下文章