我正在尝试将一个字符串插入numpy矩阵中基于整数的矩阵中。我想知道他们是否是一种方法,以更改我要在其中存储字符串的索引的数据类型?
我尝试使用.astype()函数,但这样做没有运气。 这就是我试图做的
c = np.array([0])
c.resize((3,3))
c.fill(0)
c.astype(str)
c.itemset(2, 0, 'S')
This is what I am trying to have my output look like:
OutPut:
[[0 0 S]
[0 0 0]
[0 0 0]]
答案 0 :(得分:1)
您需要将dtype
设置为object
,以允许数组中包含多种数据类型:
c = np.array([0])
c.resize((3,3))
c.fill(0)
c = c.astype('O')
c.itemset(2, 0, 'S')
c
>> array([[0, 0, 0],
[0, 0, 0],
['S', 0, 0]], dtype=object)
旁注:numpy数组并不意味着是多个类型,这可能表现不佳
答案 1 :(得分:0)
(更简单的方法)制作您的.side-anchor {
pointer-events: none;
}
.side-svg {
pointer-events: none;
}
:
c
尝试将字符串分配给整数dtype会导致错误-无法将字符串转换为整数:
In [377]: c = np.zeros((3,3), int)
In [378]: c
Out[378]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
In [379]: c[0,2] = 'S'
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-379-d41cf66ff6a1> in <module>
----> 1 c[0,2] = 'S'
ValueError: invalid literal for int() with base 10: 'S'
不能就地工作:
astype
使用字符串dtype创建新数组:
In [380]: c.astype(str)
Out[380]:
array([['0', '0', '0'],
['0', '0', '0'],
['0', '0', '0']], dtype='<U21')
In [381]: c
Out[381]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
现在我们可以分配新的字符串值:
In [382]: c1 = c.astype(str)