我试图使用numpy在二维数组的某个位置追加值q
但我得到一个错误
代码行是:
a[r,c]='Q'
为
ValueError:无法将字符串转换为float:Q
#!/bin/python
import sys
import numpy as np
#n=int(raw_input())
n,k = raw_input().strip().split(' ')
n,k = [int(n),int(k)]
a=np.zeros((n,n))
r,c = raw_input().strip().split(' ')
r,c = [int(r)-1,int(c)-1]
a[r,c]='Q' # ValueError: could not convert string to float: Q
print a
答案 0 :(得分:0)
如果要将字符放入数组,则需要一个采用字符或字符串类型数据的数组。 numpy数组中的默认数据类型是浮点数,它与字符串不兼容。因此错误信息。
将数据类型设置为<U1
(unicode)或<S1
(字节字符串)将告诉numpy该数组采用长度为1的字符串(即字符)或空字符串:
a = np.zeros((3, 4), dtype='<U1')
a[1, 2] = 'Q'
print(a)
# [['' '' '' '']
# ['' '' 'Q' '']
# ['' '' '' '']]
请注意,如果您尝试插入较长的字符串(a[0, 0] = 'ABC'
),则只会占用第一个字符。如果您插入一个数字,该数字将被转换为字符串,并且只插入第一个字符(a[0, 0] = 42
- &gt; '4'
)。