我对python真的不熟悉,很抱歉,如果我的问题太简单了。假设我有一个2d <input type="button" class="btn btn-success btn-sm pull-left" value="Update" onclick="EventChanger(this)" id="btnUS" />
<script type="text/javascript">
var elem = $("#btnUS");
if (elem.val() == "Update")
{
elem.val("Save");
$('#txtContactName').prop('disabled', true);
$('#txtIdentityNumber').prop('disabled', true);
$('#txtSuburb').prop('disabled', true);
$('#txtCellNumber').prop('disabled', false);
}
else if(elem.val() == "Save")
{
elem.val("Update");
$('#txtContactName').prop('disabled', false);
$('#txtIdentityNumber').prop('disabled', false);
$('#txtSuburb').prop('disabled', false);
$('#txtCellNumber').prop('disabled', false);
}
</script>
数组
numpy
假设我有1d数据数组size = width, height
array = np.zeros(size, dtype=np.uint8)
,我想将数据放入data_array
变量
array
但是,似乎不可能对多维颠簸阵列使用追加
答案 0 :(得分:1)
您可以使用
重塑1D阵列array=data_array.reshape(width, height)
如果总大小相同
答案 1 :(得分:0)
如果你真的需要按元素构建一个二维数组元素,这是基本的方法:
size=3,4
A=np.zeros(size,int)
for i in range(size[0]):
for j in range(size[1]):
A[i,j] = i*4 + j # assign elements, don't append
生产
数组([[0,1,2,3], [4,5,6,7], [8,9,10,11]])
但是使用reshape
我可以做同样的事情,并且更快
In [190]: x=np.arange(12)
In [191]: x
Out[191]: array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
In [192]: x.reshape(3,4) # may want to add a .copy()
Out[192]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
构建数组的另一种常见方法是附加到列表,并在循环结束时将其转换为数组。
In [193]: alist=[]
In [195]: for i in range(3):
.....: ll = []
.....: for j in range(4):
.....: ll.append(i*4+j)
.....: alist.append(ll)
.....:
In [196]: alist
Out[196]: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
In [197]: np.array(alist)
Out[197]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
或者以紧凑列表理解形式:
np.array([[i*4+j for j in range(4)] for i in range(3)])
如果我可以将j
迭代作为数组执行
for i in range(3):
alist.append(i*4+np.arange(4))
如果我们以这种方式做这两个维度,那就更好了
np.arange(3)[:,None]*4 + np.arange(4)
这使用'广播'来创建2个阵列的外部产品
In [209]: np.arange(3)*4, np.arange(4)
Out[209]: (array([0, 4, 8]), array([0, 1, 2, 3]))
填充数组的另一种方法是分配给'flat'版本:
A.flat[:]=np.arange(1,13)