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