Thanks for so many replies. In fact, I want to use several arrays to store the original data from a practical project. In every arrays, two or three column will be store the index. The main computation is still on matrices(float type) which is built from the original data. When building the main matrix, I need the repeated use of the index stored in the original data. So I hope both int and float can exist in one array with numpy, just for the original data.
Before Python, I used matlab and fortran. In matlab, it is just I have said. In fortran, a module can used for storing different data type. I used Python just now, so I don't know which one in python is best for my case. What's the suggestion? Thans again BTW: I will try' object' as array type today. I just know this type for my first time. 2006/11/28, Tim Hochberg <[EMAIL PROTECTED]>:
Zhang Sam wrote: > Hi, there > > I have a practical problem. For some reason, I hope int and float can > exist one array as shown in matlab code. > --------------------------------------------------------------------------- > >> x = [2 2.5 3.5; 1 2.6 3.5] > > x = > > 2.0000 2.5000 3.5000 > 1.0000 2.6000 3.5000 > > >> y = x(:,2) > > y = > > 2.5000 > 2.6000 > > >> y(x(:,1)) > > ans = > > 2.6000 > 2.5000 > ------------------------------------------------------------------------------------ > > However in python with numpy, the similar code is as follows. > ------------------------------------------------------------------------------------------ > x = array([[2, 2.5, 3.5],[1, 2.6, 3.5]]) > >>> x > array([[ 2. , 2.5, 3.5], > [ 1. , 2.6, 3.5]]) > >>> y = x[:,1] > >>> y > array([ 2.5, 2.6]) > >>> y.shape=2,1 > >>> y > array([[ 2.5], > [ 2.6]]) > >>> y[x[:,0],0] > Traceback (most recent call last): > File "<interactive input>", line 1, in ? > IndexError: arrays used as indices must be of integer (or boolean) type > ----------------------------------------------------------------------------------------------------- > > MATLAB can treat the 1.0,2.00,......as int 1 2,..... > How to realize this matlab code in python? Maybe it exist a simple > way. Please show me . What are you trying to do here? Is the first column always going to consist of integral values? If so, I'd point you to record arrays. Using those you could store the first column (more or less -- you'd actually access is slightly differently) as integers and the other two columns as floats. Alternatively, you could simply store things as two separate arrays, one int and one float. Or is something else going on? You could store all of your values as python objects, but I would recommend against it in almost all cases. Object arrays are cantankerous beasts, you will be chewing up a lot of memory unnecessarily and you'll loose any opportunities for speeding things up using numpy. It is true that, if you are doing the majority of your calculations in standard Python, it is faster at least for small arrays, to keep things in object arrays. However, if you are doing most of your computation that way, it is likely that something is badly wrong in the sense that you are not utilizing numpy as it's meant to be used. -tim _______________________________________________ Numpy-discussion mailing list [email protected] http://projects.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________ Numpy-discussion mailing list [email protected] http://projects.scipy.org/mailman/listinfo/numpy-discussion
