我有一个NumPy数组如下:
$row = mysqli_fetch_assoc($resulted);
echo $row['name'];
现在,我想将行[2]更新为行[1] / 6。 我正在使用..
supp = np.array([['A', '5', '0'], ['B', '3', '0'], ['C', '4', '0'], ['D', '1', '0'], ['E', '2', '0']])
但排[2]似乎仍未受影响..
for row in supp:
row[2] = row[1].astype(int) / 6
我正在使用Python 3.5.2和NumPy 1.11.1。
感谢任何帮助。提前致谢
答案 0 :(得分:5)
问题是np.array
只有一种类型,它自动被假定为字符串supp.dtype == '|S1'
,因为您的输入只包含长度为1
的字符串。因此,numpy会自动将更新的输入转换为长度为1
,'0'
的字符串。强制它为通用类型object
,然后它将能够同时包含字符串和整数或浮点数或其他任何内容:
supp = np.array([['A', '5', '0'], ['B', '3', '0'], ['C', '4', '0'], ['D', '1', '0'], ['E', '2', '0']])
supp = supp.astype(object)
for row in supp:
row[2] = int(row[1]) / 6
结果:
[['A' '5' 0.8333333333333334]
['B' '3' 0.5]
['C' '4' 0.6666666666666666]
['D' '1' 0.16666666666666666]
['E' '2' 0.3333333333333333]]
或者您也可以使用dtype
'|Sn'
更大的值n
:
supp = np.array([['A', '5', '0'], ['B', '3', '0'], ['C', '4', '0'], ['D', '1', '0'], ['E', '2', '0']])
supp = supp.astype('|S5')
for row in supp:
row[2] = int(row[1]) / 6
结果:
[['A' '5' '0.833']
['B' '3' '0.5']
['C' '4' '0.666']
['D' '1' '0.166']
['E' '2' '0.333']]
在这种情况下,如果你想要的话,你仍然只有字符串。