Numpy最重要的特点是 其N维数组对象ndarray,他是一系列同类型数据的集合,以 0 为下表 进行索引
ndarray 对象是用于存放同类型元素的多维数组。
ndarray 中的每个元素在内存中都有相同存储大小的区域。
Numpy 的一些属性
import numpy as np
a = np.array([1,2,3])
print (a)
输出结果如下:
[1, 2, 3]
# 多于一个维度
import numpy as np
a = np.array([[1, 2], [3, 4]])
print (a)
输出结果如下:
[[1, 2]
[3, 4]]
以上的输出结果可以看出什么是维度
print(a.ndim) #维度
print(a.shape) #维度,长度
print(a.size) #元素个数
print(a.dtype) #元素类型
print(a.itemsize) #对象中每个元素的大小,字节为单位
print(a.flags) #对象的内存信息
print(a.real) #元素的实部
print(a.image) #元素的虚部
print(a.data) #包含实际数组的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。
打印输出如下:
Numpy 创建 array
a = np.array([1, 2, 3])
输出结果:
[1, 2, 3]
我们这样就创建了一个 一维 的array
如果我们创建 一个 二维 的 array:
a = np.array([[1, 2, 3],[4, 5, 6]])
输出结果:
[ [1, 2, 3]
[4, 5, 6]]
这样就创建了一个二维的array
这里我们可以 定义每种array的 type
a = np.array([1, 2, 3], dtype=np.int) #这里 array 的 type 就是 dtype ; int 为整数的意思
print(a.dtype)
这里我们可以看到 array 的格式为 int32
我们也可以自己定义 int 的位数:
a = np.array([1, 2, 3], dtype=np.int64) #这里我们定义为 64位 的array 格式
print(a.dtype)
输出如下:
int64 和 float64 位数都是可以更该 。位数越小 ,占用内存就越小
我还可以生成全部为零的array:
a = array.zeros((3,4)),dtype=np.int16) #生成一个全部为零的 三行 四列的 array
print(a) #打印a
同理 我们只需要 用 one, empty, 等。。调换上述中 zeros , 即可替换
我们这里可以同样生成特定的 区域、
a = np.arange(10,20,2)
print(a)
我们也可以重新定义 a 的场和宽:
a = np.arange(12)
print(a)
a = np.arange(12).reshape((3,4)) #定义三行四列
我们这里也是可以生成线段的:
a = np.linspace((1,10,20)) #生成开头为1,结尾为10,20的意思就是说,1-10 中间有20段,自动匹配步长
print(a)
我们也是更改reshape的
a = np.linspace((1,10,20)).reshape((3,4))
NumPy 从已有的数组创建数组
将列表转换为 ndarray:
import numpy as np
x = [1, 2, 3]
a = np.asarray(x)
print(a)
打印如下:
[1 2 3]
将元组转化为 ndarray:
import numpy as np
x = (1, 2 , 3)
a = np.asarray(x)
print(a)
打印如下:
[1 2 3]
将元组列表转化为 ndarray:
import numpy as np
x = [(1, 2, 3),(4, 5)]
a = np.asarray(x)
print(a)
打印结果如下:
[(1, 2, 3),(4, 5)]
设置了 dtype 参数
import numpy as np
x = [1, 2, 3]
a = np.asarray(x, dtype = float)
print(a)
打印如下:
[1. 2. 3]
numpy.frombuffer
numpy.frombuffer 用于实现动态数组。
numpy.frombuffer 接受 buffer 输入参数,以流的形式读入转化成 ndarray 对象。
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
注意:buffer 是字符串的时候,Python3 默认 str 是 Unicode 类型,所以要转成 bytestring 在原 str 前加上 b。
参数:
buffer 可以是任意对象,会以流的形式读入。
dtype 返回数组的数据类型,可选
count 读取的数据数量,默认为-1,读取所有数据。
offset 读取的起始位置,默认为0
实例
import numpy as np
s = b'Hello World'
a = np.frombuffer(s, dtype = 'S1')
print(a)
打印如下:
[b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']
实例
import numpy as np
s = 'Hello World'
a = np.frombuffer(s, dtype = 'S1')
print(a)
打印如下:
['H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd']
numpy.fromiter
numpy.fromiter 方法从可迭代对象中建立 ndarray 对象,返回一维数组。
numpy.fromiter(iterable, dtype, count=-1)
参数:
iterable 可迭代对象
dtype 返回数组的数据类型
count 读取的数据数量,默认为-1,读取所有数据
实例
import numpy as np
# 使用 range 创建列表对象
list = range(5)
it = iter(list) #迭代对象list
#使用迭代器创建 ndarray
x = np.fromiter(it, dtype = float)
print(a)
打印如下:
[0. 1. 2. 3. 4]
参考:http://www.runoob.com/numpy/numpy-tutorial.html