1、 Problem Description:
There is a two-dimensional array with shape (308, 2) and a single number that needs to be saved to the CSV file. This single number needs to be saved to the first row of column 3.
2、 Specific implementation:
First of all, we need to splice a two-dimensional array (308, 2) and a number. Direct splicing cannot be realized, because two Darries with different row numbers and column numbers cannot be spliced (here, according to my current understanding, it is impossible to splice directly. If you can, please comment).
Then the first solution I think of is to build a (308,1) two-dimensional array, and then set the first element of the two-dimensional array to that number, then splice and save it.
In order to display the data completely, take only 3 rows of data as an example:
1
2
3
4
5
6
7
8
9
10
|
>>> a = np.ones(( 3 , 2 )) >>> b = 0.2 >>> _b = np.empty(( 3 , 1 )) >>> _b[ 0 , 0 ] = b >>> c = np.c_[a, _b] >>> print (c) [[ 1.00000000e + 000 1.00000000e + 000 2.00000000e - 001 ] [ 1.00000000e + 000 1.00000000e + 000 2.12199579e - 313 ] [ 1.00000000e + 000 1.00000000e + 000 2.54639495e - 313 ]] >>> |
But in this way, when I save the results to the file, all the rows in column 3 except the first row have data. I don’t want it to display data.
That is, the empty function just creates an uninitialized array. In fact, the values in it are garbage values.
So how to realize that there is no data visually? In fact, it is OK to use an empty string。
So I passed NP When dtype is set to STR by ones, an array with empty string elements is generated (the specific reason is not clear). At this time, if the element in the first line is directly set to a certain value, it will automatically change to ‘0’. Only after splicing and then assigning a value to it,I don’t quite understand this place, but the result is correct.
3、 Full code:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
y_true = np.ones(( 3 , 1 ), dtype = np. int ) y_pred = np.ones(( 3 , 1 ), dtype = np. int ) y = np.c_[y_true, y_pred] accuracy = np.zeros(shape = (y_true.shape[ 0 ], 1 ), dtype = np. str ) #At this time, if you set accuracy [0, 0] = '0.89', the final accuracy [0, 0] is' 0 ', and the specific reason is not clear res = np.c_[y, accuracy] #Splice it first res[ 0 , 2 ] = '0.89' #Then set it again res = pd.dataframe(res, columns = [ 'y_true' , 'y_pred' , 'accuracy' ]) res.to_csv( '1.csv' ) #Save to file |
When reading from the file, read it directly, and the blank space is assigned Nan
1
2
3
|
a = pd.read_csv( '1.csv' , usecols = ( 1 , 2 , 3 )) a = a.values print (a, type (a), a.dtype) |
About NP Nan should pay attention to the following:
- np. Nan is not an empty object.
- “= = NP. Nan” cannot be used to judge the operation of Nan in the list. Only NP Isnan().
- np. The data type of Nan is float.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import numpy as np np.nan = = np.nan out[ 3 ]: false aa = np.array([ 1 , 2 , 3 ,np.nan,np.nan, 4 , 5 ,np.nan]) aa out[ 5 ]: array([ 1. , 2. , 3. , nan, nan, 4. , 5. , nan]) aa[aa = = np.nan] = 100 #Wrong way aa out[ 7 ]: array([ 1. , 2. , 3. , nan, nan, 4. , 5. , nan]) aa[np.isnan(aa)] = 100 #The correct way to operate on Nan aa out[ 9 ]: array([ 1. , 2. , 3. , 100. , 100. , 4. , 5. , 100. ]) type (np.nan) out[ 10 ]: float |
For reference:http://www.zzvips.com/article/201492.html
This is the end of this article on the creation of empty arrays by Python numpy. For more information about creating empty arrays by numpy, please search the previous articles of developeppaper or continue to browse the relevant articles below. I hope you will support developeppaper in the future!