gpt4 book ai didi

python - 从集合创建一个 numpy 数组

转载 作者:行者123 更新时间:2023-11-28 20:00:22 24 4
gpt4 key购买 nike

我注意到 numpy 数组表现出以下行为:

>>> import numpy as np
>>> s = {1,2,3}
>>> l = [1,2,3]
>>> np.array(l)
array([1, 2, 3])
>>> np.array(s)
array({1, 2, 3}, dtype=object)
>>> np.array(l, dtype='int')
array([1, 2, 3])
>>> np.array(l, dtype='int').dtype
dtype('int64')
>>> np.array(s, dtype='int')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a number, not 'set'

有两点需要注意:

  1. 从集合中创建数组会导致数组 dtype 成为 object
  2. 尝试指定 dtype 会导致错误,这表明set 被视为单个元素而不是可迭代元素。

我错过了什么 - 我不完全理解我忽略了 python 的哪一部分。 Set 是一个可变对象,很像列表。

编辑:元组工作正常:

>>> t = (1,2,3)
>>> np.array(t)
array([1, 2, 3])
>>> np.array(t).dtype
dtype('int64')

最佳答案

array 工厂最适合 sequence集合不是的对象。如果您不关心元素的顺序并且知道它们都是整数或可转换为整数,那么您可以使用 np.fromiter

np.fromiter({1,2,3},int,3)
# array([1, 2, 3])

第二个(dtype)参数是必须的;最后一个 (count) 参数是可选的,前提是它可以提高性能。

关于python - 从集合创建一个 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58590080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com