如何将数组的元素转换为数字?python

如何将数组的元素转换为数字?python,python,arrays,numpy,Python,Arrays,Numpy,假设我有一个NumPy数组:x=np.array[1,2,3,4,5]。如何将此数组转换为整数12345?只需将求和函数与生成器一起使用即可: >>> sum(e * 10 ** i for i, e in enumerate(x[::-1])) 12345 >>> int(''.join(str(i) for i in x)) 12345 或者,或者: >>> sum(e * 10 ** (len(x) - i-1) for i, e

假设我有一个NumPy数组:x=np.array[1,2,3,4,5]。如何将此数组转换为整数12345?

只需将求和函数与生成器一起使用即可:

>>> sum(e * 10 ** i for i, e in enumerate(x[::-1]))
12345
>>> int(''.join(str(i) for i in x))
12345
或者,或者:

>>> sum(e * 10 ** (len(x) - i-1) for i, e in enumerate(x))
12345
或者您也可以使用str.join和生成器:

>>> sum(e * 10 ** i for i, e in enumerate(x[::-1]))
12345
>>> int(''.join(str(i) for i in x))
12345
为什么?

在第一个示例中,我们使用生成器将每个数字乘以其在数组中的位置的幂10,然后将它们相加,得到最终结果。如果我们使用列表理解而不是生成器来查看发生了什么,这可能更容易看到:

>>> [e * 10 ** i for i, e in enumerate(x[::-1])]
[5, 40, 300, 2000, 10000]
然后很明显,通过把这些数字相加,我们将得到12345的结果。但是,请注意,在使用此项之前,我们必须反转x,否则数字将乘以错误的10次幂,即第一个数字将乘以1,而不是10000

在第二个代码段中,代码只是使用不同的方法来获得每个索引的正确幂10。我们不需要反转数组,只需从x lenx的长度中减去索引,再减去一,第一个元素是10000,而不是100000。这只是一种选择

最后,最后一种方法应该是不言自明的。我们只是将数组中每个数字的字符串化版本连接在一起,然后将其转换回int以获得结果。

只需将求和函数与生成器一起使用即可:

>>> sum(e * 10 ** i for i, e in enumerate(x[::-1]))
12345
>>> int(''.join(str(i) for i in x))
12345
In [8]: import numpy as np

In [9]: a = np.array([1,2,3,4,5])

In [10]: int("".join(map(str, a)))
Out[10]: 12345
或者,或者:

>>> sum(e * 10 ** (len(x) - i-1) for i, e in enumerate(x))
12345
或者您也可以使用str.join和生成器:

>>> sum(e * 10 ** i for i, e in enumerate(x[::-1]))
12345
>>> int(''.join(str(i) for i in x))
12345
为什么?

在第一个示例中,我们使用生成器将每个数字乘以其在数组中的位置的幂10,然后将它们相加,得到最终结果。如果我们使用列表理解而不是生成器来查看发生了什么,这可能更容易看到:

>>> [e * 10 ** i for i, e in enumerate(x[::-1])]
[5, 40, 300, 2000, 10000]
然后很明显,通过把这些数字相加,我们将得到12345的结果。但是,请注意,在使用此项之前,我们必须反转x,否则数字将乘以错误的10次幂,即第一个数字将乘以1,而不是10000

在第二个代码段中,代码只是使用不同的方法来获得每个索引的正确幂10。我们不需要反转数组,只需从x lenx的长度中减去索引,再减去一,第一个元素是10000,而不是100000。这只是一种选择

最后,最后一种方法应该是不言自明的。我们只是将数组中每个数字的字符串化版本连接在一起,然后转换回int以获得结果。

通过numpy有一种方法:

In [8]: import numpy as np

In [9]: a = np.array([1,2,3,4,5])

In [10]: int("".join(map(str, a)))
Out[10]: 12345
通过numpy有一种方式:


另一种方法是将数组转换为numpy.string,将输出空格替换为除开头和结尾以外的所有字符和子集,然后最终将其转换为int

示例运行
另一种方法是将数组转换为numpy.string,将输出空格替换为除开头和结尾以外的所有字符和子集,然后最终将其转换为int

示例运行
虽然此代码可以回答问题,但提供关于如何以及为什么解决问题的附加上下文将提高答案的长期价值。虽然此代码可以回答问题,但提供关于如何以及为什么解决问题的附加上下文将提高答案的长期价值。