numpy数组转换(将int拆分为整数,而不必转换为字符串)

时间:2018-10-19 01:38:30

标签: python numpy

如果我有一个带有numpy.int8值的numpy数组,我可以只调用“一个”值中的字符还是仅调用“十”值,而不必将该值转换为字符串?

如果这是我的数组:x = array([[19, 19, 19],[19, 19, 19],[19, 19, 19]],dtype=int8)

有没有一种方法可以只返回1或9,而不将其转换为字符串?

2 个答案:

答案 0 :(得分:1)

您不必转换为str,可以使用整数底数除以10除以在10s处找到数字,并使用模运算符在1s处找到数字:

>>> x = 19
>>> x % 10
9
>>> x // 10
1

这两个操作都是矢量化的,可以应用于整个数组:

>>> x = array([[19, 19, 19],[19, 19, 19],[19, 19, 19]],dtype=int8)
>>> x // 10
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]], dtype=int8)

>>> x % 10
array([[9, 9, 9],
       [9, 9, 9],
       [9, 9, 9]], dtype=int8)

答案 1 :(得分:0)

您可以使用np.unravel_index一次获取所有数字:

>>> import numpy as np
>>> from pprint import pprint
>>> 
>>> a = np.random.randint(0, 1000, (12,))
###                 put as many 10s  here  as there are decimal places
###                                  vvvv
>>> digits = np.unravel_index(a, (10, 10, 10))
>>>
>>> a
array([724, 403, 334, 691, 810, 559, 634, 916,  17, 915, 375,  37])
>>> pprint(digits)
(array([7, 4, 3, 6, 8, 5, 6, 9, 0, 9, 3, 0]),
 array([2, 0, 3, 9, 1, 5, 3, 1, 1, 1, 7, 3]),
 array([4, 3, 4, 1, 0, 9, 4, 6, 7, 5, 5, 7]))