拆分数字并分配给numpy数组中的行中的元素
如何将数字列表放入2D numpy数组中,其中数组的第二维等于该列表中最大数字的位数?我还希望返回数组的每一行中不属于原始数字的元素都为零拆分数字并分配给numpy数组中的行中的元素,numpy,vectorization,Numpy,Vectorization,如何将数字列表放入2D numpy数组中,其中数组的第二维等于该列表中最大数字的位数?我还希望返回数组的每一行中不属于原始数字的元素都为零 示例: 从列表a=range(01001)中,如何获取以下形式的numpy数组: [[0,0,0,0], [0,0,0,1], [0,0,0,2], ... [0,9,9,8] [0,9,9,9], [1,0,0,0]] 请注意每个数字是如何放置在每行末尾的np.zeros((1000,4))数组中的 NB:一个pythonic的、矢量化的实
示例: 从列表
a=range(01001)
中,如何获取以下形式的numpy数组:
[[0,0,0,0],
[0,0,0,1],
[0,0,0,2],
...
[0,9,9,8]
[0,9,9,9],
[1,0,0,0]]
请注意每个数字是如何放置在每行末尾的np.zeros((1000,4))
数组中的
NB:一个pythonic的、矢量化的实现有望再次出现
样本运行-
In [224]: a = range(0,1001)
In [225]: split_digits(a)
Out[225]:
array([[0, 0, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 2],
...,
[0, 9, 9, 8],
[0, 9, 9, 9],
[1, 0, 0, 0]])
In [229]: a = np.random.randint(0,1000000,(7))
In [230]: a
Out[230]: array([431921, 871855, 636144, 541186, 410562, 89356, 476258])
In [231]: split_digits(a)
Out[231]:
array([[4, 3, 1, 9, 2, 1],
[8, 7, 1, 8, 5, 5],
[6, 3, 6, 1, 4, 4],
[5, 4, 1, 1, 8, 6],
[4, 1, 0, 5, 6, 2],
[0, 8, 9, 3, 5, 6],
[4, 7, 6, 2, 5, 8]])
另一个使用熊猫的概念
def pir(a):
z = int(np.log10(np.max(a)))
s = pd.Series(a.astype(str))
zfilled = s.str.zfill(z + 1).sum()
a_ = np.array(list(zfilled)).reshape(-1, z + 1)
return a_.astype(int)
使用@Divakar的随机数组
a = np.random.randint(0,1000000,(7))
array([ 57190, 29950, 392317, 592062, 460333, 639794, 983647])
pir(a)
array([[0, 5, 7, 1, 9, 0],
[0, 2, 9, 9, 5, 0],
[3, 9, 2, 3, 1, 7],
[5, 9, 2, 0, 6, 2],
[4, 6, 0, 3, 3, 3],
[6, 3, 9, 7, 9, 4],
[9, 8, 3, 6, 4, 7]])
您可能需要使用
np.max()
等,因为输入可以是列表。再次感谢!这真漂亮。
a = np.random.randint(0,1000000,(7))
array([ 57190, 29950, 392317, 592062, 460333, 639794, 983647])
pir(a)
array([[0, 5, 7, 1, 9, 0],
[0, 2, 9, 9, 5, 0],
[3, 9, 2, 3, 1, 7],
[5, 9, 2, 0, 6, 2],
[4, 6, 0, 3, 3, 3],
[6, 3, 9, 7, 9, 4],
[9, 8, 3, 6, 4, 7]])