NumPy 从已有的数组创建数组学习笔记
在NumPy中,我们可以通过已有的数组来创建新的数组,这样可以方便地进行数据处理和分析。
1. numpy.asarray
通过numpy.asarray可以将序列(列表、元组等)转换为ndarray。如果输入本身就是一个ndarray,则不会复制,否则会复制。
实例:
pythonCopy Codeimport 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 Codeimport 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 Codeimport 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 Codeimport 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]
以上就是从已有的数组创建数组的方法,可以根据不同的需求选择不同的方法进行使用。