NumPy 从已有的数组创建数组学习笔记

在NumPy中,我们可以通过已有的数组来创建新的数组,这样可以方便地进行数据处理和分析。

1. numpy.asarray

通过numpy.asarray可以将序列(列表、元组等)转换为ndarray。如果输入本身就是一个ndarray,则不会复制,否则会复制。

实例:

pythonCopy Code
import numpy as np # 将列表转换为ndarray arr1 = np.asarray([1, 2, 3]) print(arr1) # 将元组转换为ndarray arr2 = np.asarray((4, 5, 6)) print(arr2) # 传入ndarray,不进行复制 arr3 = np.asarray(arr1) print(arr3) # 传入列表,进行复制 arr4 = np.asarray([7, 8, 9], dtype=np.float32) print(arr4)

输出结果:

Copy Code
[1 2 3] [4 5 6] [1 2 3] [7. 8. 9.]

2. numpy.array

numpy.array与numpy.asarray类似,可以将序列转换为ndarray,但是它有更多的选项可以设置,比如指定数组元素类型、维度等。

实例:

pythonCopy Code
import numpy as np # 将列表转换为ndarray,指定元素类型为int32 arr1 = np.array([1, 2, 3], dtype=np.int32) print(arr1) # 指定维度 arr2 = np.array([(1, 2, 3), (4, 5, 6)], dtype=np.int32) print(arr2) # 指定元素类型为float arr3 = np.array([(1, 2, 3), (4, 5, 6)], dtype=np.float) print(arr3)

输出结果:

Copy Code
[1 2 3] [[1 2 3] [4 5 6]] [[1. 2. 3.] [4. 5. 6.]]

3. numpy.frombuffer

numpy.frombuffer可以将缓冲区转换为ndarray。这里的缓冲区可以是Python中的字符串、byte串等。

实例:

pythonCopy Code
import numpy as np # 将字符串转换为ndarray arr1 = np.frombuffer('hello world'.encode('utf-8'), dtype=np.uint8) print(arr1) # 将byte串转换为ndarray arr2 = np.frombuffer(b'\x01\x02\x03', dtype=np.uint8) print(arr2)

输出结果:

Copy Code
[104 101 108 108 111 32 119 111 114 108 100] [1 2 3]

4. numpy.fromiter

numpy.fromiter可以从一个可迭代对象中构建一个ndarray,此方法类似于range()函数。

实例:

pythonCopy Code
import numpy as np # 从迭代器中构建ndarray it = iter([1, 2, 3]) arr1 = np.fromiter(it, dtype=np.int32) print(arr1) # 使用自定义函数进行映射 arr2 = np.fromiter(map(lambda x: x ** 2, [1, 2, 3]), dtype=np.int32) print(arr2)

输出结果:

Copy Code
[1 2 3] [1 4 9]

以上就是从已有的数组创建数组的方法,可以根据不同的需求选择不同的方法进行使用。