为什么我不能在二维数组中追加一个字符

时间:2017-07-17 06:35:17

标签: python arrays numpy

我试图使用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 

1 个答案:

答案 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')。