参考链接: Python中的numpy.ndarray.flat
Numpy
Numpy Numpy是python里面一个用于科学计算的库,它是大量数学和科学计算包的基础,例如pandas就会用到numpy。为了更好的学习python科学计算及数据分析,掌握numpy是非常必要的。
Numpy功能
Numpy主要的功能之一用来操作数组和矩阵Numpy是科学计算、深度学习等高端领域的必备工具Numpy包含很多的数学函数,覆盖了很多数学领域,如:线性代数、傅里叶变换、随机数生成Numpy可以取代一些商用的数学软件。Matlab一个交互环境,Python Numpy==Matlab
Numpy基础
Ndarray
它是一个由同类元素组成的多维数组每个ndarray只有一种dtype类型 Ndarray创建np.array创建
>>>import numpy as np #导入numpy
>>>a = [1,2,3,4,5,6] #创建一维数组
>>>b = np.array(a)
>>>print(b)
>[1,2,3,4,5,6]
>>>c = [[1,2,3],[4,5,6]] #创建多维数组
>>>d = np.array(c)
>>>print(d)
>[[1,2,3]
[4,5,6]]
np.zeros 指定大小的全0数组。注意:第一个参数是元组,用来指定大小,如(3, 4)
>>>b = np.zeros((3,4),dtype=np.int32)
>>>print(b)
>[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
np.zeros_like 生成与矩阵c相同尺寸大小的元素为的0多维数组
>>>c = np.arange(1,8,2,dtype=np.int32).reshape((2,2))
>>>d = np.zeros_like(c)
>>>print(d)
>[[0 0]
[0 0]]
np.ones 指定大小的全1数组。注意:第一个参数是元组,用来指定大小,如(3, 4)
>>>b = np.ones((3,4),dtype=np.int64)
>>>print(b)
>[[1 1 1 1]
[1 1 1 1]
[1 1 1 1]]
np.ones_like 生成与矩阵c相同尺寸大小的元素为1多维数组
>>>c = np.arange(1,8,2,dtype=np.int32).reshape((2,2))
>>>d = np.ones_like(c)
>>>print(d)
>[[1 1]
[1 1]]
np.empty 初始化数组,不是总是返回全0,有时返回的是未初始的随机值(内存里的随机值)
>>>b = np.empty((3,4))
>>>print(b)
>[[5.e-324 5.e-324 5.e-324 5.e-324]
[5.e-324 5.e-324 5.e-324 5.e-324]
[5.e-324 5.e-324 5.e-324 5.e-324]]
np.arange arange相当于array和range的结合,前三个参数和range一样,(start,end,步长) 创建一个一维 ndarray 数组,常常与reshape连用,reshape() 将 重新调整数组的维数。
>>>c = np.arange(2,10,2,dtype=np.int32)
>>>print(c)
>[2 4 6 8]
>>>d = np.arange(1,8,2,dtype=np.int32).reshape((2,2))
>>>print(d)
>[[1 3]
[5 7]]
np.linspace linspace函数通过指定开始值、终值和元素个数来创建一维数组,也通常与reshape连用,改变数组形状
>>>b = np.linspace(1,20,10)
>>>print(b)
>[ 1. 3.11111111 5.22222222 7.33333333 9.44444444 11.55555556
13.66666667 15.77777778 17.88888889 20. ]
np.logspace logspace函数和linspace类似,不过它创建等比数列
>>>b = np.logspace(1,20,10)
>>>print(b)
>[1.00000000e 01 1.29154967e 03 1.66810054e 05 2.15443469e 07
2.78255940e 09 3.59381366e 11 4.64158883e 13 5.99484250e 15
7.74263683e 17 1.00000000e 20]
np.asarray 把python中的list和元组转换成numpy中的ndarray
>>>c = [1,2,3,4,5,6]
>>>b = np.asarray(c)
>>>print(b)
>>>print(type(b))
>[1 2 3 4 5 6]
<class 'numpy.ndarray'>
Ndarray的基本属性
ndim 查看数组的维度shape 查看数组的形状大小size 查看数组的元素个数dtype 查看数组的元素类型type 查看数组的类型,返回ndarrayitemsize 查看数组元素的字节大小data 查看实际数组元素的缓冲区地址flat 查看数组元素的迭代器
>>>import numpy as np
>>>a = np.array([[1,2,3],[4,5,6]]) #创建数组
>>>print(a.ndim) #查看数组维度
>2
>>>print(a.shape) #查看数组形状大小
>(2,3)
>>>print(a.size) #查看数组元素个数
>6
>>>print(a.dtype) #查看数组元素类型
>int32
>>>print(type(a)) #查看数组类型
><class 'numpy.ndarray'>
>>>print(a.itemsize) #查看数组元素字节大小
>4
>>>print(a.data) #查看实际数组元素的缓冲区地址
><memory at 0x000001AEED4D8120>
>>>print(a.flat) #查看数组元素的迭代器
><numpy.flatiter object at 0x000001AEEC4F72F0>
Ndarray的数据类型
bool 布尔类型int: int8 int16 int32 int64 整数类型uint: uint8 uint16 uint32 uint64 无符号整数类型float: float16 float32 float64 浮点数类型cpmplex: complex64 complex128 复数类型
Ndarray存取元素
使用整数序列:可以是列表,可以是元组整数序列中的元素可以是下标,可以是布尔值使用整数序列作为下标获得数组不和原始数组共享数据空间布尔存取只能是数组
>>>x = np.arange(1,10,1)
>>>a = x[[2,4,6]]
>>>print(a)
>[3 5 7]
>>>b = x[x>5]
>>>print(b)
>[6 7 8 9]
还会继续更新numpy的更多操作哟!