来自现有数据的NumPy数组


在本章中,我们将讨论如何从现有数据创建一个数组。

numpy.asarray

这个函数与numpy.array类似,只是它的参数较少。此例程对于将Python序列转换为ndarray很有用。

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

构造函数采用以下参数。

序号 参数和说明
1 a
以任何形式输入数据,如列表,元组列表,元组列表,元组元组或元组元组
2 dtype
默认情况下,输入数据的数据类型应用于结果ndarray
3 order C(主要专业)或F(专业专业)。C是默认的

以下示例显示如何使用 asarray 函数。

例1

# convert list to ndarray
import numpy as np

x = [1,2,3]
a = np.asarray(x)
print a

其产出如下 -

[1  2  3]

例2

# dtype is set
import numpy as np

x = [1,2,3]
a = np.asarray(x, dtype = float)
print a

现在,输出结果如下 -

[ 1.  2.  3.]

例3

# ndarray from tuple
import numpy as np

x = (1,2,3)
a = np.asarray(x)
print a

其产出将是 -

[1  2  3]

例4

# ndarray from list of tuples
import numpy as np

x = [(1,2,3),(4,5)]
a = np.asarray(x)
print a

在这里,输出如下 -

[(1, 2, 3) (4, 5)]

numpy.frombuffer

该函数将缓冲区解释为一维数组。公开缓冲区接口的任何对象都将用作返回 ndarray的 参数。

numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)

构造函数采用以下参数。

Sr.No. 参数和说明
1 buffer
任何公开缓冲区接口的对象
2 dtype
返回的ndarray的数据类型。默认为浮动
3 count
要读取的项目数量,默认值-1表示所有数据
4 offset
读取的起始位置。缺省值是0

以下示例演示使用 frombuffer 函数。

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

该函数从任何可迭代对象构建一个 ndarray 对象。这个函数返回一个新的一维数组。

numpy.fromiter(iterable, dtype, count = -1)

在这里,构造函数采用以下参数。

Sr.No. 参数和说明
1 iterable
任何可迭代的对象
2 dtype 结果数组的数据类型
3 count 要从迭代器读取的项目数量。默认值是-1,这意味着所有要读取的数据

以下示例显示如何使用内置的 range() 函数返回列表对象。这个列表的迭代器用于形成一个 ndarray 对象。

例1

# create list object using range function
import numpy as np
list = range(5)
print list

其产出如下 -

[0,  1,  2,  3,  4]

例2

# obtain iterator object from list
import numpy as np
list = range(5)
it = iter(list)  

# use iterator to create ndarray
x = np.fromiter(it, dtype = float)
print x

现在,输出结果如下 -

[0.   1.   2.   3.   4.]