这里的想法是动态增加数组的大小(行X列)(使用hstack和vstack)。但是,我不知道在我必须增加大小的那一刻,即将在阵列的特定位置写入的字符串的长度。因此,未知元素用例如初始化。 ''或0或类似的东西。
如果占位符太短,则会导致错误:
x = array([["1;", "2;"],["3;", "4;"]])
x[0][0] = "1234567890;"
print x
传递:
[['12' '2;']
['3;' '4;']]
位置[0] [0]缺少许多字符, 而
x = array([["1;", "2;"],["abcdefghij;", "4;"]])
x[0][0] = "1234567890;"
print x
提供所需的结果,即:
[['1234567890;' '2;']
['abcdefghij;' '4;']]
我们如何在Python中处理这个问题?非常感谢提前!
答案 0 :(得分:1)
Numpy数组对于处理我认为的非数字类型并不是那么好,但是如果你仍然想要使用它,这就是你可以做的。
您可以手动将数组的dtype设置为object
或'S#'
,其中#将是最大字符数。
In [19]: x = np.array([["1;", "2;"],["3;", "4;"]], dtype=object)
In [20]: x
Out[20]:
array([['1;', '2;'],
['3;', '4;']], dtype=object)
In [21]: x[0,0] = "1234567890;"
In [22]: x
Out[22]:
array([['1234567890;', '2;'],
['3;', '4;']], dtype=object)
In [24]: x = np.array([["1;", "2;"],["3;", "4;"]], dtype='S64')
In [25]: x
Out[25]:
array([['1;', '2;'],
['3;', '4;']],
dtype='|S64')
In [26]: x[0,0] = "1234567890;"
In [27]: x
Out[27]:
array([['1234567890;', '2;'],
['3;', '4;']],
dtype='|S64')