NumPy 包含许多可用于从现有数据创建数组的函数。下面提到的是用于此目的的最常用函数:

函数描述
asarray()用于将输入转为数组
frombuffer()用于将缓冲区解释为一维数组.
fromiter()用于从可迭代对象创建新的一维数组

让我们详细讨论这些函数:

numpy.asarray() 函数

numpy.asarray() 函数用于将输入转换为数组。使用该函数的语法如下:

语法

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

参数

a必填。 指定输入数据,可以是任何可以转换为数组的形式。这包括列表、元组列表、元组、元组元组、列表元组和 ndarray。
dtype可选。 指定所需的数据类型。默认情况下,数据类型是根据输入数据推断的。
order可选。 指定是否存储结果。两个可能的值是:C(C 风格)和 F(Fortran 风格)。默认值:'C'

示例:

在下面的示例中,该函数用于从现有的 numpy 数据创建数组.

import numpy as np

x1 = [10, 20, 30, 40, 50, 60]
x2 = (100, 200, 300)
x3 = [[10, 20, 30], [40, 50, 60]]

#从列表创建numpy数组
Arr1 = np.asarray(x1)
print("Arr1 为:", Arr1)

#从元组创建numpy数组
Arr2 = np.asarray(x2, dtype=float)
print("\nArr2 为:", Arr2)

#从列表创建numpy数组
Arr3 = np.asarray(x3)
print("\nArr3 为:\n", Arr3) 

上述代码的输出将是:

Arr1 为: [10 20 30 40 50 60]

Arr2 为: [100. 200. 300.]

Arr3 为:
[[10 20 30]
 [40 50 60]] 

numpy.frombuffer() 函数

numpy .frombuffer() 函数用于将缓冲区解释为一维数组。使用该函数的语法如下:

语法

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

参数

buffer必填。 指定公开缓冲区接口的对象。
dtype可选。 指定所需的数据类型。默认为浮点型。
count可选。 指定要读取的项目数。默认值为-1,表示缓冲区中的所有数据。
offset可选。 从此偏移量(以字节为单位)开始读取缓冲区。默认值为 0。

示例:

在下面的示例中,frombuffer() 函数为用于从缓冲区创建 numpy 数组。

import numpy as np

x = b"Hello World"

#从缓冲区创建一维numpy数组
Arr1 = np.frombuffer(x, dtype='S1')
print("Arr1 为:", Arr1)

#使用计数参数
Arr2 = np.frombuffer(x, dtype='S1', count=5)
print("\nArr2 为:", Arr2)

#使用计数和偏移参数
Arr3 = np.frombuffer(x, dtype='S1', count=5, offset=6)
print("\nArr3 为:", Arr3) 

上述代码的输出将是:

Arr1 为: [b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']

Arr2 为: [b'H' b'e' b'l' b'l' b'o']

Arr3 为: [b'W' b'o' b'r' b'l' b'd'] 

numpy.fromiter() 函数

numpy.fromiter() 函数用于从可迭代对象创建新的一维数组。

语法

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

参数

iterable必需。 指定为数组提供数据的可迭代对象。
dtype必需。 指定返回数组所需的数据类型。
count可选。 指定要从可迭代对象中读取的项目数。默认为-1,表示读取所有数据。

示例:

在下面的示例中, fromiter() 函数用于从可迭代对象创建 numpy 数组。

import numpy as np

it = (x*x for x in range(5))

#从可迭代创建numpy数组
Arr = np.fromiter(it, dtype=float)
print(Arr) 

上述代码的输出将是:

[ 0.  1.  4.  9. 16.]