编辑推荐:
本文来源csdn,本文主要介绍花式索引和布尔型索引涉及到复制操作,其他的都是返回源数据的视图。
NumPy(Numerical Python的基础)是高性能科学计算和数据分析的基础包。其部分功能如下:
1.ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
2.用于对数组数据进行快速运算的标准数学函数(无序编写循环)。
3.用于读写磁盘数据的工具及其用于操作内存映射文件的工具。
4.线性代数、随机数生成以及傅里叶变换功能。
5.用于集成由C、C++、Fortran等语言编写的代码的工具。
创建ndarray
创建数组最简单的办法就是使用array函数。它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的NumPy数组。
列表的转换:
data1
= [6,7.5,8,0,1]
arr1 = np.array(data1)
# array([ 6. , 7.5, 8. , 0. , 1. ])
嵌套序列(比如由一组等长列表组成的列表)将会被转为一个多维数组:
data2
= [[1,2,3,4],[5,6,7,8]]
arr2 = np.array(data2)
# array([[1, 2, 3, 4],
# [5, 6, 7, 8]])
data2是一个list of lists, 所以arr2维度为2。我们能用ndim和shape属性来确认一下:
arr2.ndim
# 2
arr2.shape
# (2,4)
除非主动声明,否则np.array会自动给data搭配适合的类型,并保存在dtype里:
arr1.dtype
# dtype('float64')
arr2.dtype
# dtype('int64')
除了np.array,还有一些其他函数能创建数组。比如zeros,ones,另外还可以在一个tuple里指定shape:
np.zeros(10)
# array([ 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0.])
np.zeros((3,6))
# array([[ 0., 0., 0., 0., 0., 0.],
# [ 0., 0., 0., 0., 0., 0.],
# [ 0., 0., 0., 0., 0., 0.]])
np.empty((2,3,2))
# array([[[ 0.00000000e+000, 0.00000000e+000],
# [ 2.16538378e-314, 2.16514681e-314],
# [ 2.16511832e-314, 2.16072529e-314]],
# [[ 0.00000000e+000, 0.00000000e+000],
# [ 2.14037397e-314, 6.36598737e-311],
# [ 0.00000000e+000, 0.00000000e+000]]])
np.empty并不能保证返回所有是0的数组,某些情况下,会返回为初始化的垃圾数值,如上。
arange是一个数组版的python range函数:
np.arange(15)
# array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14])
一些创建数组的函数:
ndarray的数据类型
dtype保存数据的类型:
arr1
= np.array([1, 2, 3], dtype=np.float64)
arr2 = np.array([1, 2, 3], dtype=np.int32)
arr1.dtype
# dtype('float64')
arr2.dtype
# dtype('int32')
dtype才是numpy能灵活处理其他外界数据的原因。
可以用astype来转换类型:
arr
= np.array([1, 2, 3, 4, 5])
arr.dtype
# dtype('int64')
float_arr = arr.astype(np.float64)
float_arr.dtype
# dtype(&