Завершить чистую программу C для любой матрицы 2D-массива с заданной строкой x column .
#include <stdio.h>
void printspiral(int *p,int r, int c) {
int i=0,j=0,m=1,n=0;
static int firstrun=1,gCol;
if (!p||r<=0||c<=0)
return ;
if(firstrun) {
gCol=c;
firstrun=0;
}
for(i=0,j=0;(0<=i && i<c)&&(0<=j && j<r);i+=m,j+=n) {
printf(" %d",p[i+j*gCol]);
if (i==0 && j==1 && (i+1)!=c) break;
else if (i+1==c && !j) {m=0;n=1;}
else if (i+1==c && j+1==r && j) {n=0;m=-1;}
else if (i==0 && j+1==r && j) {m=0;n=-1;}
}
printspiral(&p[i+j*gCol+1],r-2,c-2);
firstrun=1;
printf("\n");
}
int main() {
int a[3][3]={{0,1,2},{3,4,5},{6,7,8}};
int b[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};
int c[4][3]={{0,1,2},{3,4,5},{6,7,8},{9,10,11}};
int d[3][1]={{0},{1},{2}};
int e[1][3]={{0,1,2}};
int f[1][1]={{0}};
int g[5][5]={{0,1,2,3,4},{5,6,7,8,9},{10,11,12,13,14},{15,16,17,18,19},{20,21,22,23,24}};
printspiral(a,3,3);
printspiral(b,3,4);
printspiral(c,4,3);
printspiral(d,3,1);
printspiral(e,1,3);
printspiral(f,1,1);
printspiral(g,5,5);
return 0;
}
Мы часто видим конструкцию df.loc[subscript] = …
для присвоения одной строке DataFrame. Mikhail_Sam отправил сравнительные тесты содержащий, среди других, этой конструкции, а также метода с помощью dict, и создайте DataFrame в конце . Он нашел, что последний был самым быстрым безусловно. Но если мы заменяем df3.loc[i] = …
(с предварительно выделенным DataFrame) в его коде с df3.values[i] = …
, результат значительно изменяется в том, что метод работает подобный тому с помощью dict. Таким образом, мы должны чаще брать использование df.values[subscript] = …
к рассмотрению. Однако обратите внимание, что .values
берет основанный на нуле нижний индекс, который может отличаться от DataFrame.index.
Можно использовать объект генератора для создания Кадра данных, который будет большей памятью, эффективной по списку.
num = 10
# Generator function to generate generator object
def numgen_func(num):
for i in range(num):
yield ('name_{}'.format(i), (i*i), (i*i*i))
# Generator expression to generate generator object (Only once data get populated, can not be re used)
numgen_expression = (('name_{}'.format(i), (i*i), (i*i*i)) for i in range(num) )
df = pd.DataFrame(data=numgen_func(num), columns=('lib', 'qty1', 'qty2'))
, Чтобы добавить сырые данные к существующему DataFrame можно использовать, добавляют метод.
df = df.append([{ 'lib': "name_20", 'qty1': 20, 'qty2': 400 }])