NumPy 来自现有数据的数组

发布于 2024-08-06 18:24:09 字数 3657 浏览 8 评论 0

这一章中,我们会讨论如何从现有数据创建数组。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
23 人气
更多

推荐作者

无远思近则忧

文章 0 评论 0

久伴你

文章 0 评论 0

萌无敌

文章 0 评论 0

新一帅帅

文章 0 评论 0

莫多说

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文