Numpy创建数组

Numpy Ndarray对象

NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray 对象是用于存放同类型元素的多维数组。

ndarray 中的每个元素在内存中都有相同存储大小的区域

ndarray 内部由以下内容组成:

  • 一个指向数据(内存或内存映射文件中的一块数据)的指针。
  • 数据类型或 dtype,描述在数组中的固定大小值的格子。
  • 一个表示数组形状(shape)的元组,表示各维度大小的元组。
  • 一个跨度元组(stride),其中的整数指的是为了前进到当前维度下一个元素需要"跨过"的字节数。

python 创建一个二维numpy全是True的矩阵 python创建二维数组numpy_元组

跨度可以是负数,这样会使数组在内存中后向移动,切片中 obj[::-1] 或 obj[:,::-1] 就是如此。

创建数组(创建一个ndarray)

numpy.array

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndim = 0)

参数说明:

名称描述object数组或嵌套的数列dtype数组元素的数据类型,可选copy对象是否需要复制,可选order创建数组的样式,C为行方向,F为列方向,A为任意方向(默认)subok默认返回一个与基类类型一致的数组ndmin指定生成数组的最小维度

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]]
# 最小维度  
import numpy as np 
a = np.array([1,2,3,4,5], ndmin =  2)  
print (a)

#结果# [[1, 2, 3, 4, 5]]
# dtype 参数  
import numpy as np 
a = np.array([1,  2,  3], dtype = complex)  
print (a)

#结果# [ 1.+0.j,  2.+0.j,  3.+0.j]

从已有的数组创建数组

numpy.asarray

numpy.asarray 类似 numpy.array,但 numpy.asarray 的参数只有三个,比 numpy.array 少两个。

numpy.asarray(a, dtype  =  None,  order  =  None)

参数说明:

参数描述a任意形式的输入参数,可以是,列表, 列表的元组, 元组, 元组的元组, 元组的列表多维数组dtype数据类型,可选order可选,有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序。

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']

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)
 
# 使用迭代器创建 ndarray 
x=np.fromiter(it, dtype=float)
print(x)

#结果# [0. 1. 2. 3. 4.]

NumPy 从数值范围创建数组

numpy.arange

numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:

numpy.arange(start, stop, step, dtype)

根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

参数说明:

参数描述start起始值,默认为0stop终止值(不包含)step步长,默认为1dtype返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

生成0到5的数组

import numpy as np

x = np.arange(5)
print(x)

#结果# [0  1  2  3  4]

设置返回值的类型为float

import numpy as np

x = np.arange(5,dtype = float)
print(x)

#结果# [0.  1.  2.  3.  4.]

设置起始值、终止值、步长:

import numpy as np

x = np.arange(10, 20, 2)
print(x)

#结果# [10  12  14  16  18]

numpy.linspace

numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明:

参数描述start序列的起始值stop序列的终止值,如果endpointtrue,该值包含于数列中num要生成的等步长的样本数量,默认为50endpoint该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。retstep如果为 True 时,生成的数组中会显示间距,反之不显示。dtypendarray 的数据类型

import numpy as np

a = np.linspace(1, 10, 10)
print(a)

#结果# [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]

设置元素全是1的等差数列:

import numpy as np

a= np.linspace(1, 1, 10)
print(a)

#结果# [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]

将endpoint设置为False,不包含终止值:

import numpy as np

a = np.linspace(10, 20, 5, endpoint = False)
print(a)

#结果# [10. 12. 14. 16. 18.]

如果将 endpoint 设为 true,则会包含 20。

设置间距:

import numpy as np

a = np.linspace(1, 10, 10, retstep = True)
print(a)

#结果# (array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.]), 1.0)

#拓展例子
b = np.linspace(1, 10 ,10).reshape([10, 1])

#结果# 
[[ 1.]
 [ 2.]
 [ 3.]
 [ 4.]
 [ 5.]
 [ 6.]
 [ 7.]
 [ 8.]
 [ 9.]
 [10.]]

numpy.logspace

numpy.logspace 函数用于创建一个于等比数列。格式如下:

numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

base 参数意思是取对数的时候 log 的下标。

参数说明:

参数描述start序列的起始值为:base ** startstop序列的终止值为:base ** stop。如果endpointtrue,该值包含于数列中num要生成的等步长的样本数量,默认为50endpoint该值为 ture 时,数列中中包含stop值,反之不包含,默认是True。base对数 log 的底数。dtypendarray 的数据类型

import numpy as np

#默认底数是10
a = np.logspace(1.0, 2.0, num = 10)
print(a)

#结果# 
[ 10.           12.91549665     16.68100537      21.5443469  27.82559402      
  35.93813664   46.41588834     59.94842503      77.42636827    100.    ]

将对数底数设置为2:

import numpy as np

a = np.logspace(0, 9, 10, base=2)
print(a)

#结果# [  1.   2.   4.   8.  16.  32.  64. 128. 256. 512.]