NumPy 来自现有数据的数组
这一章中,我们会讨论如何从现有数据创建数组。
numpy.asarray
此函数类似于 numpy.array
,除了它有较少的参数。 这个例程对于将 Python 序列转换为 ndarray
非常有用。
numpy.asarray(abject, dtype = None, order = None)
构造器接受下列参数:
序号 | 参数及描述 |
---|---|
1. | abject 任意形式的输入参数,比如列表、列表的元组、元组、元组的元组、元组的列表 |
2. | dtype 通常,输入数据的类型会应用到返回的 ndarray |
3. | order 'C' 为按行的 C 风格数组, 'F' 为按列的 Fortran 风格数组 |
下面的例子展示了如何使用 asarray
函数:
示例 1 直接从列表创建
# 将列表转换为 ndarray
import numpy as np
x = [1,2,3]
a = np.asarray(x)
print(a)
输出如下:
[1 2 3]
示例 2 从列表创建的同时改变数据类型
# 设置了 dtype
import numpy as np
x = [1,2,3]
a = np.asarray(x, dtype = float)
print a
输出如下:
[ 1. 2. 3.]
示例 3
# 来自元组的 ndarray
import numpy as np
x = (1,2,3)
a = np.asarray(x)
print(a)
输出如下:
[1 2 3]
示例 4
# 来自元组列表的 ndarray
import numpy as np
x = [(1,2,3),(4,5)]
a = np.asarray(x)
print(a)
x = [(1, 2, 3),(4, 5, 6)]
a = np.asarray(x)
print(a)
输出如下:
[(1, 2, 3) (4, 5)]
[[1 2 3]
[4 5 6]]
这里可以看到其两组输出的不同,第一个是一维的,第二个是二维的。设置由于 ndarray 的特性引起的。ndarray 要求是一个矩阵,在元素不能够成矩阵时,就会将维到最低的维度,保证称为一个矩阵。
numpy.frombuffer
此函数将缓冲区解释为一维数组。 暴露缓冲区接口的任何对象都可以用作参数来返回 ndarray
。
numpy.frombuffer(buffer, dtype = float, count = -1, offset = 0)
构造器接受下列参数:
序号 | 参数及描述 |
---|---|
1. | buffer 任何暴露缓冲区借口的对象 |
2. | dtype 返回数组的数据类型,默认为 float |
3. | count 需要读取的数据数量,默认为 -1 ,读取所有数据 |
4. | offset 需要读取的起始位置,默认为 0 |
示例
下面的例子展示了 frombuffer
函数的用法。
import numpy as np
# 在 python2 中,可以直接这样写
# s = 'Hello World'
# 在 python3 中,由于默认使用 Unicode 编码的字符,默认的 str 中没有 __buffer__ 函数,使用 numpy.frombuffer 函数会引发错误。
# 所以需要使用如下的方法创建 python2 的字符串
s = b'Hello World'
a = np.frombuffer(s, dtype = 'S1')
print(a)
输出如下:
# pyton 2 输出
['H' 'e' 'l' 'l' 'o' ' ' 'W' 'o' 'r' 'l' 'd']
# python3 输出
[b'H' b'e' b'l' b'l' b'o' b' ' b'W' b'o' b'r' b'l' b'd']
numpy.fromiter
此函数从任何可迭代对象构建一个 ndarray
对象,返回一个新的一维数组。
numpy.fromiter(iterable, dtype, count = -1)
构造器接受下列参数:
序号 | 参数及描述 |
---|---|
1. | iterable 任何可迭代对象 |
2. | dtype 返回数组的数据类型 |
3. | count 需要读取的数据数量,默认为 -1 ,读取所有数据 |
以下示例展示了如何使用内置的 range()
函数返回列表对象。 此列表的迭代器用于形成 ndarray
对象。
示例 1
# 从列表中获得迭代器
import numpy as np
list = range(5)
it = iter(list)
# 使用迭代器创建 ndarray
x = np.fromiter(it, dtype = float)
print(x)
输出如下:
[0. 1. 2. 3. 4.]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: NumPy 数组创建例程
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论